这个问题在这里已有答案:
如果你的狗有一个弱的参考骨,这意味着狗是这种情况下的参考'owner',它使用骨骼,但骨骼可以不存在,狗仍然可以运作(因为骨骼的参考是可选的) .
然而,对于“无主”,似乎关键字“无主”不是在所有者的引用声明中使用,而是在另一个对象中使用 . 例如,Bone对其狗的引用被标记为“无主” .
无主是不安全的 . 如果所有者在程序中的某个时刻不存在,它可能会崩溃,并且它不能是可选的 . 为什么人们会使用无主而不是弱引用?
为什么不用弱?从我的理解来看,这只是与大声失败和失败的失败有关 . 在无主的情况下,如果骨头没有狗,应用程序将始终崩溃,而如果我们使用弱,您将最终得到一个仍然存在的骨骼,带有“幽灵”狗 .
1 回答
强弱参考
所以当A对B有弱引用时,A就是 NOT 所有者 .
示例(其中A是
Bone
,B是Dog
)Strong Reference
这里
Dog
can 有Bone
. 在那种情况下,它是该骨头的所有者 . 所以bone
属性是一个强大的参考 .Weak reference
Bone
可以属于一只狗 . 但是我们需要将belongsTo
属性声明为弱,否则我们有一个强大的保留周期(这意味着ARC一旦完成它们就不会释放这些对象) .无主参考
让我们看另一个例子
同样,Person可以拥有一个CreditCard,因此它拥有一个所有者属性,它是
CreditCard
的强引用 .像这样的东西
但是,必须将弱属性声明为
Optional
,因此我们使用unowned
,这意味着: