gpt4 book ai didi

objective-c - ViewDidLoad 和 ARC 和 XIB

转载 作者:行者123 更新时间:2023-11-29 11:08:59 24 4
gpt4 key购买 nike

鉴于我们正在使用 ARC 编写代码,我是否应该在 viewDidUnloadnil 属性,这些属性实例化自:

  1. XIB(这里的 nilling 有时是从 IDE 生成的)

  2. 来自初始化器并且没有 IBOutlet

  3. 弱者

?

最佳答案

viewDidUnload 的目的是让您的应用有机会删除对用户界面对象的引用,这些对象可能不再存在,因为在收到内存警告时 View 已被删除。因此:

  1. 您应该将任何用户界面 控件设置为nil(因为正在卸载 View )。 weak 属性是不必要的(它们通常应该是 weak per Apple guidance on this topic),但如果 Xcode 为您插入它,这不是问题。有关在 viewDidUnload 中执行的操作的指南,请参阅 Resource Programming Guide: The Nib Files 的“内存警告”部分。

  2. 对于您在 viewDidLoad 中设置的非用户界面对象,我会小心翼翼地在 中将它们设置为 nil viewDidUnload,特别是如果你没有使用 ARC(例如,如果你不小心 nil 实例变量,你可能会导致泄漏)。您可能希望平衡将要恢复的内存量与重新检索该数据的“成本”(例如,如果它来自某个远程服务器)。无论如何,我建议您在 didReceiveMemoryWarning 中处理非 UI 对象的内存释放。

在我看来,我将 viewDidUnload 视为一个机会,以确保我不会维护对可能不再存在的用户界面对象的引用,并且我使用 didReceiveMemoryWarning清空缓存或其他非 UI 相关项目,我可以安全地清除这些项目以恢复一些内存。如果您担心 iOS 6,请注意 viewDidUnload 的处理可能会发生变化,虽然 NDA 禁止我们公开讨论它,但我建议您可以引用 iOS 6 Beta 4 Release Notes并查找对 viewDidUnload 的引用。

关于objective-c - ViewDidLoad 和 ARC 和 XIB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12372370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com