【发布时间】:2010-11-13 03:15:48
【问题描述】:
我正在从 TableViewController 的 didSelectRowAtIndexPath 方法中将视图控制器推送到导航控制器的堆栈上,如下所示:
MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
MyObject *myO = (MyObject *)[appDelegate.myOs objectAtIndex:indexPath.row];
myViewController.amount = myO.amount;
[self.navigationController pushViewController:myViewController animated:YES];
[myViewController release];
如果我取消注释最后一行,则应用程序在返回时崩溃并出现错误:
-[CALayer release]: message sent to deallocated instance 0xd4f860
再深入一点,我发现崩溃可以进一步缩小到 MyViewController 的 dealoc 方法中对 [super dealoc] 的调用。通过取消注释“[super dealoc]”我们不会崩溃。
我无法进一步缩小范围。 “超级”将是 UIViewController 类,我无法进一步调查该 dealoc 方法......我可以吗?也许有一种方法可以查看 0xd4f860 到底指的是什么,但我不知道如何?有什么想法吗?
【问题讨论】:
-
你在任何地方发布 myViewController.view 吗?
标签: iphone cocoa-touch uitableview uiviewcontroller uinavigationcontroller