在TableView的CellView中的闭包中保留循环



我在ViewController中面临保留周期问题。我在我的表视图单元格中添加了一个闭包来收听点击按钮,如下所示:

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

并称之为:

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

闭包在cellForRow方法中实现为:

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

但在这个过程中,我面临着保留周期。根据我的理解,它不应该有强烈的参考保留周期。有人能解释一下这个过程中出了什么问题吗。感谢

var onBtnActionClickHandler由单元格保留,并且是对控制器的强引用?。

您应该将单元格内的var声明为弱:

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

好。所以我解决了这个问题。问题不在于这个单元格,一个管理器类设置了两次监听器,只释放了一次。这在我的课堂上引起了重新学习循环。谢谢你对这个问题的回答。

最新更新