我正在开发一个应用程序,我将一个视图控制器推到UINavigationController上,并在导航控制器保留它时立即释放它。当我弹出视图控制器时,dealloc
方法会按预期调用,但问题是应用程序正在崩溃。如果我在GDB中通过启用NSZombie
来观察它的说法-[MyViewController isKindOfClass:]: message sent to deallocated instance 0x6847a00
如果我从视图控制器的dealloc
方法中删除[super dealloc]
,它就可以正常工作。除[super dealloc]外,我在dealloc方法中没有其他内容。这里可能有什么问题,请任何人帮忙。代码片段如下:
MyViewController *myViewController = [[MyViewController alloc] initWithNibName:nil bundle:nil];
myViewController.path = selectedPath; //very important to set path here
myViewController.parentViewController = self;
[self cleanBookshelf];
[self.navigationController pushViewController:myViewController animated:NO];
[myViewController release];
[indicatorView removeFromSuperview];
[loadingindicator stopAnimating];
我正在弹出myViewController的一个操作方法作为
-(IBAction)goBack:(UIButton*)sender{
[self.navigationController popViewControllerAnimated:YES];
}
只是猜测,但我怀疑问题出在这行:
myViewController.parentViewController = self;
UIViewController的parentViewController
属性被标记为readonly
,我认为这是一个强烈的信息,你不应该搞砸它