当我的应用程序收到内存警告时,我该怎么办?
答案 0 :(得分:8)
这一切都取决于您的应用程序,除非遵循Apple的推荐做法,否则通常您不需要做任何特别的事情。
目前不可见的ViewControllers将收到didReceiveMemoryWarning
条消息。默认情况下(调用[super didReceiveMemoryWarning]
)控制器的视图被卸载(释放,释放)。在视图卸载时,视图控制器会收到viewDidUnload
,您应该在其中释放所有IBOutlet(或以其他方式保留的UI元素)。只有这样才能完全取消分配视图并释放内存。
在didReceiveMemoryWarning
中,您还应该释放尽可能多的数据 - 如果您在ViewController中存储数据模型的某些部分,将其释放,并在viewDidLoad
中重建,这将在您的视图中调用再次加载(当用户导航回此控制器时)。您也可以通知您的模型类以释放内存。
答案 1 :(得分:1)
这实际上取决于您的应用。
例如,如果您的应用从互联网下载并缓存了大量内容,则应在收到警告时尽可能清除。
如果您的应用是OpenGL游戏,您可能会有一个纹理/声音/数据管理器,它会引用一些未使用的数据,然后您可以将其释放。 Cocos2D管理着这类事情。
如果你的应用程序不是内存密集型的,那么你的内存就会泄漏,你应该1)阅读Apple的内存管理编程指南2)使用Instruments / Leaks。
答案 2 :(得分:0)
在didReceiveMemoryWarning
中,您应该释放所有缓存或非必要项目以防止内存完全耗尽。
答案 3 :(得分:-1)
如果您记录或写入任何其他文件,则可能存在“磁盘”空间问题。
此外,您应检查内存泄漏。