【发布时间】:2019-01-08 19:03:10
【问题描述】:
在将闭包定义为变量时,我有一个保留周期。
变量定义如下:
public class MyCell: UICollectionViewCell {
public var callback: ((MyCell)->Void)?
}
如果我使用委托而不是闭包,保留周期就会消失,但我想知道如何为未来的情况使用闭包来定义它。
我尝试将回调变量设置为weak,但我想,弱属性只能应用于类和类绑定协议类型。
编辑
用法:
class CustomController: UIViewController {
private func onActionOccurs(_ cell: MyCell) {
cell.backgroundColor = .red // For example
}
// After dequeuing the cell:
{
cell.callback = onActionOccurs(_:)
}
}
谢谢
【问题讨论】:
-
添加
weak self作为参数? -
如果回调参数是实例本身,那么
MyCell可以像@JoakimDanielson说的那样改成weak self。 -
为什么将 MyCell 作为参数传递给块?不需要这个,无论你在哪里分配块变量,你都可以捕获单元格。
-
你能发布一下你是如何使用这个单元格闭合的吗?
标签: ios iphone swift memory-leaks retain-cycle