簡體   English   中英

自我解雇期間,弱者,強者或無主者都不會做嗎?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM