0

我有一个基于导航的应用程序,可以在一些 ViewController 之间切换。如果我按下“goHome”按钮,popViewControllerAnimated:则调用该方法并返回主屏幕。但是有一个问题:没有调用 dealloc 方法,也没有释放先前视图中的所有元素。所有的动画/UI 元素仍然挂在内存中。我该怎么办?

4

2 回答 2

1

在您的 UIViewController 中确保您的 dealloc 具有正确的签名并且最后调用超级视图:

 - (void) dealloc {
     //Release your stuff
     [super dealloc];
 }

还要记住,在处理 UIViewControllers 时,您还需要处理 viewDidUnload 中的内存(并不能真正解决您的问题,但我想我会把它扔在那里)。

于 2012-04-05T13:13:11.410 回答
1

首先,切换到自动引用计数是个好主意,这会让您的生活更轻松。其次,确保不再保留对控制器或其他对象的引用。

有趣的故事,有一次我忘记将NSFetchedResultsController's 的委托设置为 nil 和其他内存错误,并且当获取的结果控制器试图调用委托时得到一个丑陋的异常,但它已经消失了。

于 2012-04-05T15:23:28.717 回答