簡體   English   中英

Retain Cycle in closure in cellView of TableView

[英]Retain Cycle in closure in CellView of TableView

我在我的 ViewController 中面臨保留周期問題。 我在我的 tableview 單元格中添加了一個閉包來監聽點擊按鈕:

   var onBtnActionClickHandler: (() -> ())?

並將其稱為:

@objc func btnActionClicked() {
    onBtnActionClickHandler?()
}

閉包在 cellForRow 方法中實現為:

cell.onBtnActionClickHandler = { [weak self] in
    self?.btnActionClicked()
}

但我在這個過程中面臨着保留周期。 根據我的理解,它不應該有很強的引用來保留循環。 任何人都可以解釋這個過程中出了什么問題。 謝謝

var onBtnActionClickHandler 由單元格保留,並強烈引用您的 controller?。

您應該將單元格內的 var 聲明為 weak:

weak var onBtnActionClickHandler: (() -> ())?

好的。 所以我已經解決了這個問題。 問題不在於這個單元格,實際上是一個經理 class 兩次設置了一個監聽器並且只釋放了一次。 那導致了我的 class 中的 reatain 循環。感謝您對這個問題的所有回答。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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