gpt4 book ai didi

objective-c - 关于 ARC for iOS 的几个问题?

转载 作者:行者123 更新时间:2023-12-01 18:00:07 25 4
gpt4 key购买 nike

我对 ARC for iOS 还很陌生(对 iOS 也很陌生),我有几个关于 ARC 的快速问题。

~ 在 View Controller 中,如果我的 viewDidUnload() 方法中没有将我的属性设置为 nil 的语句,当我的 View Controller 被释放时,属性的内存是否仍会被释放?如果是这样,为什么我需要明确地拥有这个 viewDidUnload 方法?

~ 在不是 View Controller 的对象中,我应该在哪里将属性设置为 nil?在dealloc中?诸如 @property BOOL isActive; 这样的原始属性呢? ...我需要将它们设置为零/零吗?

谢谢。

最佳答案

  • 只要它们是弱引用,您就不需要将属性设置为 nil。 IBOutlets 通常应该是弱引用,因为它们 View Controller 包含对 View 的强引用,而 View 又包含对其所有 subview 的强引用。 (如果您有不属于该 View 层次结构的 IBOutlets,它们应该很强大。)
  • 你不应该需要零或零任何东西,对象或标量。 Xcode 在使用 Interface Builder 时会插入 nilling 语句,但这仍然是为 pre-ARC Objective-C 生成代码。

  • 你可能甚至不需要 viewDidUnload ;它只在特殊情况下调用,当内存压力较低时。因此,您不能依赖它进行清理。您的 IBOutlets 应该很弱,因此当 View 从 View Controller 中清除时它们会被自动清理(如果重新加载 View ,它们将被恢复)。

    我在这里假设您正在编写一个新产品,这意味着您只针对 iOS 5 或更高版本。如果您在新产品中以 iOS 4 为目标,那么您真的是 shouldn't是。世界已经在发展,iOS 5 或更高版本占据了 80% 的市场份额。这就是今天。展望 future ,对于更小比例的人来说,避免使用 iOS 5 功能将变得更加困难。

    关于objective-c - 关于 ARC for iOS 的几个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11106003/

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