繁体   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