我有一个使用导航控制器导航到不同视图的应用程序。这就是我正在做的事情:
MapViewController *aMap = [[MapViewController alloc] initWithNibName:@"MapView"
bundle:nil ];
[self.navigationController pushViewController:aMap
animated:YES];
[aMap release];
在用户操作中,我想返回第一个视图。这就是我所做的:
-(void)alertView:(UIAlertView *)alertView
didDismissWithButtonIndex:(NSInteger)buttonIndex
{
[self.navigationController popToRootViewControllerAnimated:NO];
}
当我按下调用波纹管方法的按钮时,我的应用程序会按预期进入第一个视图。但是,当我按下“主页按钮”并尝试重新打开应用程序时,问题就出现了。然后,应用程序崩溃,出现以下错误:
2010-12-23 14:33:18.504 test[4549:307] *** -[MapViewController respondsToSelector:]: message sent to deallocated instance 0x5c26320
据我所知,我向一个不存在的对象实例发送了一条消息,但我发现这不会发生在哪里
你有什么建议吗?
答案 0 :(得分:13)
在解除分配后,有些东西试图将消息发送到MapViewController。
它们是引用它的任何对象 - 是它的任何子视图的委托,还是接收任何通知,或类似的东西?
如果是这样,您需要确保取消订阅控制器的dealloc
方法中的任何通知,并将引用控制器的任何delegate
参数(在其他对象上)设置为nil。