我正试图解决在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