[英]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.