applicationDidReceiveMemoryWarning
和didReceiveMemoryWarning
之间有什么区别?处理这些警告的最佳方法是什么?
答案 0 :(得分:10)
您应该在所有视图上使用“延迟加载”数据。
例如,如果要在表视图上显示数据列表,则应在视图控制器收到didReceiveMemoryWarning
并将数据指针设置为nil时释放数据。
大多数Apple示例代码都强调这种延迟加载技术。
applicationDidReceiveMemoryWarning
是发送到AppDelegate的类似消息。您应该发布存储在AppDelegate中的不需要的全局数据。
一个典型的例子是Safari。在Safari中打开2-3个标签(在iPhone模拟器上)。让所有标签加载网页内容。尝试在不同标签之间切换。您应该注意到内容仍然存在且未刷新。现在从菜单中关闭“模拟内存警告”。现在,当您切换到其他选项卡时,Safari将再次获取内容。在内部发生的事情是,URL被记住,但整个网页内容都是在didReceiveMemoryWarning
方法中发布的。
您还应该在应用中实施类似的机制。