我有一个奇怪的问题,每次按下按钮时都会调用一个方法:
- (void)launcherView:(TTLauncherView*)lnchr didSelectItem:(TTLauncherItem*)itm {
MyObject* obj = ...
MyViewController* detailView = [[MyViewController alloc] init]; // line A
[self.navigationController pushViewController:detailView animated:YES];
[detailView setObject:obj];
detailView = nil; // should I also release it? -- line B
}问题是,我很抱歉我不得不释放detailView (内存工具显示我有一个内存泄漏是没有完成的),也因为navigationController应该保留我的detailView,但如果我试图在"A“行或"B”行添加自动释放,或者只是在"B“行添加detailView的释放(当然,在分配它为空之前),程序崩溃,并向释放的实例CALayer发送EXC_BAD_ACCESS‘原因释放消息...
有什么想法吗?非常感谢
发布于 2011-03-24 19:20:58
它能在不崩溃的情况下工作吗?
- (void)launcherView:(TTLauncherView*)lnchr didSelectItem:(TTLauncherItem*)itm {
MyObject* obj = ...
MyViewController* detailView = [[MyViewController alloc] init];
[self.navigationController pushViewController:detailView animated:YES];
//[detailView setObject:obj]; // <- What's this for?
[detailView release]
}发布于 2011-03-24 19:15:47
这样试试吧。
- (void)launcherView:(TTLauncherView*)lnchr didSelectItem:(TTLauncherItem*)itm {
MyObject* obj = ...
MyViewController* detailView = [[MyViewController alloc] init];
[detailView setObject:obj];
[self.navigationController pushViewController:detailView animated:YES];
[detailView release];
detailView = nil; // now this will be optional
}发布于 2011-03-24 19:28:35
试试"initwithnibname“
无关,但如果您正在追踪内存泄漏,请不要忘记释放MyObject
https://stackoverflow.com/questions/5418183
复制相似问题