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