我正在开发一个应用程序,我将一个视图控制器推送到UINavigationController并在导航控制器保留它时立即释放它。当我弹出视图控制器时,dealloc
方法正在按预期调用但问题是应用程序正在崩溃。如果我在GDB中通过启用NSZombie
来说明-[MyViewController isKindOfClass:]: message sent to deallocated instance 0x6847a00
。如果我从我的视图控制器中移除[super dealloc]
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];
}
答案 0 :(得分:0)
猜测,但我怀疑问题在于这一行:
myViewController.parentViewController = self;
UIViewController的parentViewController
属性标记为readonly
,我将其视为强烈的消息,您不应该将其弄乱。