当我的应用收到内存警告时该怎么办?

时间:2010-10-26 12:33:11

标签: iphone ipad memory memory-management

当我的应用程序收到内存警告时,我该怎么办?

4 个答案:

答案 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)

如果您记录或写入任何其他文件,则可能存在“磁盘”空间问题。

此外,您应检查内存泄漏。