当我点击基于导航的应用程序上的后退按钮时,为什么没有调用viewdidunload函数

时间:2011-03-08 10:21:41

标签: objective-c cocoa nsfetchedresultscontroller

您好我想发布我的fetchedResultsController

我想知道为什么在基于导航的应用程序上按下按钮时没有调用viewdidunload。或者我应该在其他地方发布它?

感谢您的帮助

4 个答案:

答案 0 :(得分:15)

只有在从内存中清除视图时,才能保证调用

-viewDidUnload,并且UIKit框架可能会挂起,以便在用户返回时快速显示视图。要在视图消失时确定性地释放提取的结果控制器,请使用-viewWillDisappear:-viewDidDisappear:

答案 1 :(得分:1)

如果您因为没有调用viewDidLoad而认为您有泄漏,请检查您的controller.view removeFromSuperView调用并确保您正在使用removeFromParentViewController。而不是仅从superview中删除视图,而是从其parentController中删除viewController。

答案 2 :(得分:0)

我发现在我的案例中发生了一些奇怪的事情:dealloc被调用但viewDidUnload没有。

但我认为我可以将其用于内存管理目的,因为当时我的所有强大属性都将被释放(我正在使用ARC)。

在您的情况下,我认为您还应检查被调用的dealloc并在那里发布您的fetchedResultsController

答案 3 :(得分:-1)

你可以自-dealloc来自己打电话。