这个问题从未发生在我身上。我在UINavigationController中有一个UIViewController。当收到内存警告(从未调整级别)时,将调用可见控制器的viewDidUnload
方法,因此视图将被卸载并且我获得了一个非常棒的黑屏(带有导航栏)在顶部)。
我正在使用iOS 4.3.3上的iPad 1进行测试。
有什么建议吗?
答案 0 :(得分:1)
根据我的理解,viewDidUnload
方法由didRecieveMemoryWarning
(超级类)中的UIViewController
函数调用。基本上iOS会给你几个警告,并期望看到你的内存使用率下降。如果您继续忽略这些,操作系统将终止您的应用程序。
但有时候,保持一些视图的运行至关重要,所以我解决这个问题的方法就是简单地覆盖didRecieveMemoryWarning
方法,在其中,不做任何事情。
或者更好的是,检查self
中的当前视图是self.navigationController.visibleViewController
,如果是,请不要将内存警告调用传递给[super didRecieveMemoryWarning]
。
如果您持有图像缓存或其他内容,请将其清空。
HTH
答案 1 :(得分:0)
根据Apple
内存管理指南,当viewcontroller
在紧急情况下收到内存警告时,它会直接调用viewDidUnload
,以便通过释放视图来管理内存。
它实际上提供了清除临时数据的机会,这些数据在重新创建视图时非常有用。由于您的UIViewCotroller
是viewcontroller
的根navigationcontroller
,因此您会看到oly导航栏,视图会被卸载。
答案 2 :(得分:0)
您在控制器上的低内存情况下收到viewDidUnload,其中iOS已确定不再需要这些视图。请记住,Apple对更高版本的iOS上的实现做了一些改进,所以看看5.x下会发生什么可能会更糟。其次,您应该检查视图控制器层次结构。