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

Ale*_*one 0 iphone memory-management ios5.1

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

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

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

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

Jus*_*Sid 5

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

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

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