我正試圖解決在Swift中基於閉包的強參考循環。
在下面的代碼中,對象由擁有的視圖控制器保留。 ProgressHUD
是UIView
,它也由擁有的視圖控制器保留。每次調用完成處理程序時,ProgressHUD
都會泄漏。當使用新的閉包捕獲功能時,聲明自己爲弱或無主無法解決內存泄漏問題。Swift Closures - 捕捉自我弱
object.setCompletionHandler { [weak self] (error) -> Void in
if(!error){
self?.tableView.reloadData()
}
self?.progressHUD?.hide(false)
}
但是,如果我宣佈一個弱無功爲關閉之外的自我,它修復了內存泄漏,就像這樣:
weak var weakSelf = self
object.setCompletionHandler { (error) -> Void in
if(!error){
weakSelf?.tableView.reloadData()
}
weakSelf?.progressHUD?.hide(false)
}
任何想法,這是爲什麼不與斯威夫特拍攝工作?
不應該有一個保留週期 – newacct 2014-10-15 00:41:41