applicationDidReceiveMemoryWarning和didReceiveMemoryWarning之间有什么区别?

7

applicationDidReceiveMemoryWarningdidReceiveMemoryWarning有什么区别?如何处理这些警告?

1个回答

11
你应该在所有视图中使用“惰性加载”数据的技术。例如,如果你要在表视图上显示一组数据,则应该在你的视图控制器接收到 didReceiveMemoryWarning 消息时释放数据并将数据指针设为nil。
大部分苹果示例代码都强调了这种惰性加载的技术。 applicationDidReceiveMemoryWarning 是一个类似的消息,它会发送给你的AppDelegate。你应该释放不需要的全局数据存储在你的AppDelegate中。
一个经典的例子是Safari。在Safari中打开2-3个标签页(在iPhone模拟器上)。让所有标签页加载网页内容。尝试在不同的标签之间切换。你应该注意到内容仍然存在,没有被清除。现在从菜单中关闭“模拟内存警告”。现在当你切换到另一个标签时,Safari将再次获取内容。内部发生的事情是,URL被记住了,但整个网页内容在didReceiveMemoryWarning方法中被释放。
你也应该在你的应用程序中实现类似的机制。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接