ios-Swift中解除迴圈引用的三種方式
阿新 • • 發佈:2019-01-26
1、加一個標記,表示裡面用到的self都是弱引用
test4 {[weak self] (name)->() in
//self?表示如果物件一旦被釋放了,就不再訪問其屬性或者方法
print(self?.view)
}
2、OC中的傳統的方法
3、在Swift中也是加一個標記,[unowed self] 表示閉包中的self都是assign的,如果self被釋放之後,閉包中的self的地址不會修改,會出現野指標錯誤//由於weak修飾的屬性在執行時可能會改變所以要用var,因為weak所指向的物件被釋放之後,weakSelf就變成了nil weak var weakSelf = self test4 { (name)->Void in //weakSelf?表示物件一旦被釋放,不再去訪問其屬性或者方法 print(weakSelf?.view) }
test4 {[unowned self] (name)->() in
print(self.view)
}