内存泄漏自动释放崩溃

时间:2012-01-10 08:37:02

标签: objective-c memory-leaks

当我尝试将视图从A切换到B时,一切正常。但是当我想从B回到A时,应用程序会崩溃吗?

当我删除自动释放时,应用程序正常工作,但随后泄漏。

以下是切换视图的代码:

-(IBAction)switchToExplainView:(id)sender{

explainViewController = [[ExplainViewController alloc]
                         initWithNibName:@"ExplainViewController"
                         bundle:nil];

[self.view addSubview:explainViewController.view];

}

2 个答案:

答案 0 :(得分:0)

您必须同时考虑控制器和视图。

控制器将保持其视图,但您需要保持该控制器。如果您(自动)释放它,它可能很容易被取消分配,如果您尝试访问它,您的应用程序将崩溃。

视图本身将由它的超级视图发布,但不是控制器。

一种可能的解决方案是将该控制器存储在管理(切换)视图的类的ivar中。只有在完成它们后才能释放它们。

答案 1 :(得分:0)

您是否使用导航控制器在视图之间来回切换?如果是,您可能想要使用[myNavController pushViewController:... animated:...]消息。之后,您可以轻松发布explainViewController