iOS 6 中的 didReceiveMemoryWarning

Posted

技术标签:

【中文标题】iOS 6 中的 didReceiveMemoryWarning【英文标题】:didReceiveMemoryWarning in iOS 6 【发布时间】:2013-05-11 00:02:55 【问题描述】:

我正在开始一个针对 ios 6 的新项目(没有 ARC)。来自Apple doc:

使用此方法释放所有关联的非关键对象 你的视图控制器。在 iOS 6 上,您也可以使用此方法 释放对视图对象的引用。

我的问题是,在我们解除分配didReceiveMemoryWarning 中的“非关键对象”之后,我们什么时候可以再次恢复“非关键对象”?

我之所以问这个问题是因为在 iOS6 中永远不会调用 viewDidUnload,我认为在程序终止之前不会第二次调用 viewDidLoad。我说的对吗?

【问题讨论】:

"我认为在程序终止前第二次不会调用 viewDidLoad ...(我说得对吗?)"是的。 为什么有人不使用ARC????随便问问。 感谢您的评论和帮助。在 ARC 出来之前就开始了我的第一个项目,并且已经习惯了 RC 方案。听说 ARC 不应该有任何性能损失,并且可以节省大量工作。但我对非 ARC 方案非常满意,并且不觉得关注 r 值有太多开销。 我的意见? ARC!!!这只是非 ARC 文件的简单编译器标志。 感谢您的评论。再想一想,我想说我确实觉得 ARC 是一个非常好的概念,因为它节省了编码工作并且不影响性能(它肯定也应该减少编码错误的机会)。习惯某事并不是不尝试新事物和更好事物的借口…… 【参考方案1】:

对非关键数据使用延迟加载。清除didReceiveMemoryWarning 中的这些数据。然后下次尝试访问时,数据将再次延迟加载。

【讨论】:

这里有一些实际的代码说明了@rmaddy 所说的内容:apeth.com/iOSBook/ch19.html#SECvcmem 感谢大家的详细解答和帮助。

以上是关于iOS 6 中的 didReceiveMemoryWarning的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 6 中的 iOS 6 模拟器中运行应用程序

iOS 6 中的 didReceiveMemoryWarning

ios 6 中的 UITabBarController 旋转问题

Angular 6 中的 socket.io-stream 导入问题

CLLocation 区域监控在 iOS 5.1 和 iOS 6 中的行为不同

IOS 6 中的音量检测