循環(huán)引用
/// 完成回調(diào)屬性
var finishedCallBack: (()->())?
/// 加載數(shù)據(jù)
///
/// - parameter finished: 完成回調(diào)
func loadData(finished: () -> ()) {
self.finishedCallBack = finished
print("開始加載數(shù)據(jù)...")
// ...
working()
}
func working() {
finishedCallBack?()
}
deinit {
print("網(wǎng)絡(luò)工具 88")
}
- 實例化 NetworkTools 并且加載數(shù)據(jù)
class ViewController: UIViewController {
var tools: NetworkTools?
override func viewDidLoad() {
super.viewDidLoad()
tools = NetworkTools()
tools?.loadData() {
print("come here \(self.view)")
}
}
/// 與 OC 中的 dealloc 類似,注意此函數(shù)沒有()
deinit {
print("控制器 88")
}
}
- 循環(huán)鏈:self(ViewController) -> tools(NetworkTools) ->finishedCallBack -> finished -> self(ViewController)
解決辦法
loadData { [weak self] in
print("\(self?.view)")
}
- OC
__weak typeof(self) weakSelf
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者