iPhone iOS处理内存警告最常用的方法是什么?

时间:2012-07-27 01:14:01

标签: iphone memory-management ios5.1

我很惊讶iOS 5.1没有像我预期的那样管理内存。当设备运行大量应用程序时,似乎iOS不会在后台扼杀内存占用应用程序,但也会向我自己的应用程序发送内存警告。

例如,显示UIImagePicker在两个测试设备上崩溃了应用程序。双击主页键并查杀某些后台应用程序会阻止应用程序收到内存警告并崩溃。

如果iOS不能为我释放内存,我会徘徊,是否可以显示某种警报视图,通知用户内存不足并且某些后台任务必须被杀死?< /强>

我不知道如何处理此类事件 - iOS是否需要时间来清理内存(而应用程序会响应内存警告)?

1 个答案:

答案 0 :(得分:5)

在使用内存警告困扰你之前,iOS会做很多事情,包括杀死后台应用程序。从iOS 5开始,iOS甚至会以尽可能少的内存警告来惹恼你,这意味着如果真的需要你摆脱使用内存但现在不需要的内容,你只会得到一个(那就是您可以安全地重新创建,而无需花费数小时)。如果您的应用程序在没有先给出内存警告的情况下崩溃,很可能是您分配了这么多内存,系统在决定杀死您之前无法告诉您内存耗尽,原因是内存警告安排在主线程的runloop上,直到你给runloop时间做另一次迭代,你不会收到警告。

此外,Apple不希望您告诉用户存在内存问题;它是你的应用程序必须处理它,而不是用户!因此,当审核小组正在审核您的应用时,如果出现内存警告,那么您的应用也会被拒绝(谣言说他们会发送这些警告来测试您的应用对您的应用的反应)

Soo,总结一下:iOS确实像你想象的那样通过杀死它甚至关闭其他系统守护进程来工作,只有在这种情况发生后你才会收到内存不足的通知。响应这些警告的正确方法是尽可能多地释放内存,从未来可以轻松重新创建的大部分内容开始(例如,如果您的应用显示大量图片但不是所有图片都可见扔掉那些现在看不见的东西)。告诉用户是处理问题的错误方法,Apple不喜欢它,所以尽量解决问题。