【发布时间】:2020-10-13 05:49:54
【问题描述】:
weak var cat: Cat!
对
unowned var cat: Cat
我刚开始了解这个话题,但这真的让我很困惑,在正常设置中使用弱但隐式展开的变量有什么好处,除了 UI 的东西?
【问题讨论】:
-
Unowned 只是描述了引用的逻辑——“与弱引用不同,无主引用应该总是有一个值。因此,将值标记为无主不会使其成为可选的,并且ARC 从不将无主引用的值设置为 nil。” docs.swift.org/swift-book/LanguageGuide/…
-
这在 Swift 文档中有很好的描述:docs.swift.org/swift-book/LanguageGuide/…
-
@BenSinclair 我经历过,但我没有看到“弱隐式展开可选”的示例
-
@Bruce
weak和隐式展开是互斥的;因为weak可以转nil。无论哪种方式,如果您保证变量的生命周期,那么您最好使用unowned。 -
是的,我也这么认为,但我在我正在处理的当前代码库中看到了它们。所以如果你说的是真的,基本上两者都是一样的,但是如果我们保证它永远不会是 nil 我们应该使用 unowned,那么使用弱 IUO 是没有意义的。所以对我来说,弱 IUO 和无主是一回事,但无主使意图更清晰。
标签: ios swift weak-references