[英]Neither weak nor strong or unowned will do during self dismissal?
这是避免被解雇后保留的有效模式吗?
@objc func backButtonTapped() {
var s: SiteViewController! = self
navigationController!.popToRootViewController(animated: true, completion: {
s.dismissCompletion()
s = nil // break the strong reference to self
})
}
您可以只在封闭中使用self
。 一旦控件从关闭返回,对self
的引用将被释放。
如果确实要使用s
,则没有理由将其声明为隐式展开的可选。 你可以说var s = self
此次关闭应该释放s
一旦执行权。 我想你可以self
在这里
您可以执行以下操作以避免保留,
@objc func backButtonTapped() {
navigationController!.popToRootViewController(animated: true, completion: { [weak self] in
if let strongSelf: SiteViewController = self {
strongSelf.dismissCompletion()
}
})
}
这样可以确保不会有任何保留。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.