“无主”就像“强”引用一样,不会增加Swift中的引用数量吗?

时间:2018-11-06 02:47:39

标签: swift automatic-ref-counting

我一直在研究无主引用类型,试图将其与强引用进行比较。

与我的同事讨论完之后,仔细阅读了文章,我终于遇到了Swift文档,该文档解释了无主与弱的不同之处,即“如果捕获的引用永远不会为零,则应始终将其捕获为无主。参考,而不是弱参考。”     -https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html

如果我正确理解unowned,在我看来,这就像是“强”引用,不会增加引用计数。准确吗?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

  

如果我正确理解无所有权,在我看来,这就像是“强”引用,不会增加引用计数。准确吗?

是的,就目前而言是准确的。但这与引用计数无关,仅次于。关于retainrelease,碰巧操纵引用计数的调用。强引用会在分配时调用retain,稍后再处理release。没有所有权的引用则没有;它根本不管理分配对象的内存。

因此,您需要无主对象具有比该对象更长的保证生命周期,因为从理论上讲,当该无主对象仍然存在时,该无主对象可以不存在,并且如果这样做,则对无主对象的引用将成为垃圾的参考(悬空的指针),将来可能会发生神秘的崩溃。