为什么我的UIViewController的视图在可见时被卸载?

eme*_*gro 6 memory memory-management uiviewcontroller ios viewdidunload

这个问题从未发生在我身上.我在UINavigationController中有一个UIViewController.当收到内存警告(没关注级别)时,会调用可见控制器的viewDidUnload方法,因此卸载视图,我得到一个很棒的黑屏(顶部有一个导航栏).

我在iOS 4.3.3上使用iPad 1进行测试.

有什么建议?

din*_*eth 1

据我了解,该方法是由(超类)中的函数viewDidUnload调用的。基本上,iOS 会给你一些警告,并期望看到你的内存使用量下降。如果您继续忽略这些,操作系统将杀死您的应用程序。didRecieveMemoryWarningUIViewController

但有时,保持某些视图的启动和运行至关重要,因此我解决此问题的方法是简单地覆盖该didRecieveMemoryWarning方法并在其中不执行任何操作。

或者更好的是,检查self中是否是当前视图self.navigationController.visibleViewController,如果是,则不要将内存警告调用传递给[super didRecieveMemoryWarning]

如果您持有图像缓存或其他内容,只需清空它们即可。

华泰