3 回答
TA贡献1851条经验 获得超4个赞
有类似的问题。在我的情况下,viewController需要获取navigationController事件,因此它正在注册为导航控制器委托:
self.navigationController.delegate = self;
当该控制器被取消分配但仍然是视图控制器的委托时,发生崩溃。在dealloc中添加以下代码无效:
-(void) dealloc
{
if (self.navigationController.delegate == self)
{
self.navigationController.delegate = nil;
}
因为在调用dealloc的那一刻,视图控制器已经从视图层次结构中删除,所以self.navigationController为nil,所以比较肯定会失败!:-(
解决方案是添加此代码以检测VC是否在实际离开视图层次结构之前就离开了视图层次结构。它使用iOS 5中引入的方法来确定何时弹出视图而不将其推入
-(void) viewWillDisappear:(BOOL) animated
{
[super viewWillDisappear:animated];
if ([self isMovingFromParentViewController])
{
if (self.navigationController.delegate == self)
{
self.navigationController.delegate = nil;
}
}
}
- 3 回答
- 0 关注
- 475 浏览
添加回答
举报