弱引用和無主引用
在閉包和捕獲的實例總是互相引用并且總是同時釋放時,將閉包內的捕獲定義為無主引用。
相反,在被捕獲的引用可能變?yōu)?nil 時,定義一個弱引用的捕獲。弱引用總是可選項,當實例的引用釋放時會自動變?yōu)?nil。這使我們可以在閉包體內檢查它們是否存在。
注意:
如果被捕獲的引用永遠不會變?yōu)?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)