我一直在研究无主引用类型,试图将其与强引用进行比较。
与我的同事讨论完之后,仔细阅读了文章,我终于遇到了Swift文档,该文档解释了无主与弱的不同之处,即“如果捕获的引用永远不会为零,则应始终将其捕获为无主。参考,而不是弱参考。” -https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html
如果我正确理解unowned
,在我看来,这就像是“强”引用,不会增加引用计数。准确吗?
谢谢您的帮助!
答案 0 :(得分:1)
如果我正确理解无所有权,在我看来,这就像是“强”引用,不会增加引用计数。准确吗?
是的,就目前而言是准确的。但这与引用计数无关,仅次于。关于retain
和release
,碰巧操纵引用计数的调用。强引用会在分配时调用retain
,稍后再处理release
。没有所有权的引用则没有;它根本不管理分配对象的内存。
因此,您需要无主对象具有比该对象更长的保证生命周期,因为从理论上讲,当该无主对象仍然存在时,该无主对象可以不存在,并且如果这样做,则对无主对象的引用将成为垃圾的参考(悬空的指针),将来可能会发生神秘的崩溃。