Swift weak和unowned

弱引用和无主引用

在闭包和捕获的实例总是互相引用并且总是同时释放时,将闭包内的捕获定义为无主引用。

相反,在被捕获的引用可能变为 nil 时,定义一个弱引用的捕获。弱引用总是可选项,当实例的引用释放时会自动变为 nil。这使我们可以在闭包体内检查它们是否存在。

注意:

如果被捕获的引用永远不会变为 nil,应该用无主引用而不是弱引用。

var first = 1
self.number = 2
self.testBlock  = { [first,unowned self] _ in
    print(first,self.number)
}
first = 4
self.number = 4
self.testBlock()
print(self.number,first)            
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容