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)            

你可能感兴趣的:(Swift weak和unowned)