ios - 为什么我的 UIViewController View 在可见时被卸载?

标签 ios memory memory-management uiviewcontroller viewdidunload

我从来没有遇到过这个问题。我在 UINavigationController 中有一个 UIViewController。当收到内存警告时(不管级别),visible Controller 的 viewDidUnload 方法被调用,因此 View 被卸载,我得到一个很棒的黑屏(有顶部的导航栏)。

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

有什么建议吗?

最佳答案

据我了解,viewDidUnload 方法由 UIViewController(父类(super class))中的 didRecieveMemoryWarning 函数调用。基本上 iOS 会给你几个警告,并希望看到你的内存使用率下降。如果您继续忽略这些,操作系统将终止您的应用程序。

不过,有时保持某些 View 正常运行至关重要,因此我解决此问题的方法是简单地重写 didRecieveMemoryWarning 方法并在其中不执行任何操作。

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

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

HTH

关于ios - 为什么我的 UIViewController View 在可见时被卸载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11775072/

相关文章:

iOS 应用程序 : webView or PhoneGap?

c++ - 如何释放 V8 占用的内存?

c++ - 如何确定 C++ 中标准库字符串或其他非基本数据类型的内存大小?

c - 未知的 C 字符串截断/覆盖

java - 将 Java Initial 和 Maximum 内存设置为相同值的性能

c - 如何在 x32 和 x64 中保持结构体大小不变?

ios - AFNetworking 故障 block

html - 为什么 iFrame 没有在某些页面上加载到 Safari 中?

r - 仍在努力处理大数据集

ios - iOS Phonegap App中阿拉伯语显示不正确