1

自从下载了最新版本的 Xcode 以来,我刚刚开始了一个新的 Xcode 项目。我马上注意到,在.h 文件中声明一个属性时,它不会在 .m 文件中自动合成,也不会在 ViewDidUnload 存根中设置为 nil。此外...没有 ViewDidUnload IBAction 存根。在对堆栈溢出进行了一些研究之后,我意识到这是新的和正常的。

我还注意到新的 didReceiveMemoryWarning 并且有人写了以下内容:如果您想释放与视图或其他 UI 对象无关的内存,请使用 didReceiveMemoryWarning。

我的问题是……之前,Xcode 会在 viewDidUnload 中自动将属性设置为 nil。它不会在 didReceiveMemoryWarning 中将它们设置为 nil。我应该在 didReceiveMemoryWarning 存根中手动将这些设置为 nil 还是将存根留空,就像 Xcode 创建 .m 文件时一样?是否有任何地方在不再使用时需要将属性设置为 nil,或者 Xcode 现在会自动执行此操作吗?

谢谢!

4

1 回答 1

1

大多数 UI 元素使用的内存确实微不足道。这是 iOS 已弃用(现在不再调用)的原因之一viewDidUnload。仅仅证明麻烦(包括可能的错误)的合理性并不重要。

didReceiveMemoryWarning是您应该减少任何显着内存使用的地方。特别是,它是转储您可以重建的任何缓存信息的好地方。在我看来,您应该查看至少 10 KB 范围内的内容。转储几百字节通常不值得管理它所需的代码(代码本身需要内存,加上测试和维护)。didReceiveMemoryWarning如果您不缓存很多东西,您可能根本不需要在许多程序中。(还有其他工具,比如,无论如何NSCache都比手工编码更好。)didReceiveMemoryWarning

于 2012-10-09T19:04:19.097 回答