【发布时间】:2017-04-11 08:17:12
【问题描述】:
如果你有一个对 Bone 的弱引用的 Dog,这意味着在这种情况下,Dog 是引用的“所有者”,并且它使用骨骼,但是bone 可以不存在并且Dog 仍然可以工作(因为对bone 的引用是可选的)。
但是对于'unowned',似乎关键字'unowned'不是在引用的所有者声明中使用,而是在另一个对象中使用。例如,Bone 对其狗的引用被标记为“unowned”。
无主不安全。如果所有者在程序中的某个时刻不存在,它可能会崩溃,并且它不能是可选的。为什么要使用 unowned 而不是弱引用?
为什么不只使用弱呢?据我了解,这与大声失败与默默失败有关。在 unowned 的情况下,如果 bone 最终没有狗,应用程序总是会崩溃,而如果我们使用 weak,您最终会得到仍然存在的骨头,带有“幽灵”狗。
【问题讨论】:
标签: ios swift reference weak-references unowned-references