ios - applicationDidReceiveMemoryWarning 和 didReceiveMemoryWarning 之间有什么区别?

标签 ios cocoa-touch memory-management

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

最佳答案

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

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

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

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

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

关于ios - applicationDidReceiveMemoryWarning 和 didReceiveMemoryWarning 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2302200/

相关文章:

ios - 如何在 "touching"嵌入 iframe 时禁用滚动?

ios8 : Plain label font gets mixed up when replacing text

ios - 坚持在 Swift 和 MapKit 中使用 MKPinAnnotationView()

ios - 核心数据一对多关系。许多人为所有人出现

objective-c - 与联系人中相同的 UI(按钮和表格 View 在同一位置)

ios - 当传递给另一个 View Controller 时我应该复制一个对象吗

ios - 调整 UIImage 大小以适应表格单元格 ImageView

ios - Progress View不想隐藏

iphone - 为什么 Instruments 在此代码中报告内存泄漏?

objective-c - 理解@weakify 宏