gpt4 book ai didi

ios - 在 willSet 中捕获 `self`

转载 作者:搜寻专家 更新时间:2023-10-31 22:32:26 25 4
gpt4 key购买 nike

如果我有一个 Collection View 委托(delegate)助手类,其属性如下所示:

weak var delegate: UICollectionViewDelegate? {
willSet {
self.collectionView?.delegate = newValue
}
}

self 是否会被捕获到 willSet block 中?

与其他积木不同,您不能在 will set 积木上执行 [unowned self][weak self]。在我有 collectionView?.delegate = 和 self.collectionView?.delegate = 的情况下,deinit 总是被调用,向我表明它不会在 setter block 中是否使用 self` 的区别。

最佳答案

这只是一个property observer ,不是 block ,这意味着它不会保留/复制/捕获任何对象,因此您可以在那里安全地使用 self

顺便说一句,我会为该变量实现 getter 和 setter,因为您定义它只是为了能够更新 collectionView 的委托(delegate)属性:

weak var delegate: UICollectionViewDelegate? {
get {
return self.collectionView?.delegate
}
set {
self.collectionView?.delegate = newValue
}
}

关于ios - 在 willSet 中捕获 `self`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36818006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com