如果我有一个集合视图委托helper类,其属性如下所示:
weak var delegate: UICollectionViewDelegate? {
willSet {
self.collectionView?.delegate = newValue
}
}
self
块中是否会willSet
被捕获?
与其他块不同,您不能在遗嘱设置块上执行[unowned self]
或[weak self]
。如果我有collectionView?.delegate =
和self.collectionView?.delegate = ,
deinit was always called, indicating to me that it doesn't make a difference whether or not
self`在setter块中使用。
答案 0 :(得分:3)
它只是一个property observer,而不是一个块,这意味着它不会保留/复制/捕获任何对象,因此您可以安全地使用self
。
顺便说一下,我会为该变量实现getter和setter,因为你定义它只是为了能够更新collectionView的委托属性:
weak var delegate: UICollectionViewDelegate? {
get {
return self.collectionView?.delegate
}
set {
self.collectionView?.delegate = newValue
}
}