在IOS中忽略didReceiveMemoryWarning

时间:2015-04-16 16:31:10

标签: ios objective-c uikit objective-c++ didreceivememorywarning

根据Apple文档,如果应用程序忽略内存警告,系统可能会强制释放脏内存,如果它需要一些。同时在某些情况下,由于性能原因,手动释放数据以响应内存警告并稍后恢复它是不可接受的。那么有可能知道某些类实例成员是否实际被强制清除了吗?他们被分配了nil吗?那些指向C ++对象的指针是Obj-C对象的成员呢?

1 个答案:

答案 0 :(得分:3)

这不是它的工作原理。操作系统将通过退出您的应用程序释放内存。操作系统无法进入并随机删除对象,因为它无法理解哪些对象可以安全清除,哪些对象不会安全。

IIRC有时会做的唯一事情是卸载一些视图控制器'堆叠的视图(但不是实际的控制器对象),例如在导航控制器中,当前不可见。它可以做到这一点,因为它知道如何加载这些视图以及它们被引用的ivars(因为你通过IBOutlet等告诉它),所以它可以并且实际上是NIL那些。

更新:这些天还有一些缓存类会在收到内存警告时驱逐它们的对象,但是你必须明确地使用这些类来释放你的对象。