当我将闭包定义为变量时,会出现保留循环引用的情况。
变量定义如下:
变量定义如下:
public class MyCell: UICollectionViewCell {
public var callback: ((MyCell)->Void)?
}
如果我使用代理而不是闭包,保留周期就会消失,但我想知道如何使用闭包定义以备将来之需。
我尝试将回调变量设置为weak
,但我认为weak
属性只能应用于类和类限定协议类型。
编辑
用法:
class CustomController: UIViewController {
private func onActionOccurs(_ cell: MyCell) {
cell.backgroundColor = .red // For example
}
// After dequeuing the cell:
{
cell.callback = onActionOccurs(_:)
}
}
谢谢
weak self
? - Joakim DanielsonMyCell
更改为weak self
。 - Rakesha Shastri