applicationDidReceiveMemoryWarning,didReceiveMemoryWarning之间有什么区别?

时间:2010-02-20 12:43:43

标签: ios cocoa-touch memory-management

applicationDidReceiveMemoryWarningdidReceiveMemoryWarning之间有什么区别?处理这些警告的最佳方法是什么?

1 个答案:

答案 0 :(得分:10)

您应该在所有视图上使用“延迟加载”数据。 例如,如果要在表视图上显示数据列表,则应在视图控制器收到didReceiveMemoryWarning并将数据指针设置为nil时释放数据。

大多数Apple示例代码都强调这种延迟加载技术。

applicationDidReceiveMemoryWarning是发送到AppDelegate的类似消息。您应该发布存储在AppDelegate中的不需要的全局数据。

一个典型的例子是Safari。在Safari中打开2-3个标签(在iPhone模拟器上)。让所有标签加载网页内容。尝试在不同标签之间切换。您应该注意到内容仍然存在且未刷新。现在从菜单中关闭“模拟内存警告”。现在,当您切换到其他选项卡时,Safari将再次获取内容。在内部发生的事情是,URL被记住,但整个网页内容都是在didReceiveMemoryWarning方法中发布的。

您还应该在应用中实施类似的机制。