我很少看到人们在[weak self]
中使用didSet
。有这个原因吗?
我尝试在[weak self]
变量中使用didSet
:
var data: Dictionary<String, Any>! { // [1]
didSet { [2]
self?.layoutSubviews()
}
}
我将[weak self] in
置于[1]或[2],我仍然收到错误:Use of unresolved identifier weak
为什么?将[weak self]
用于didSet
此致
答案 0 :(得分:12)
didSet
不是闭包,你不能使用闭包语法。
没有理由在那里使用weak self
。 didSet
处理程序不会像方法创建所有权周期一样创建所有权周期。
答案 1 :(得分:6)
不要这样做。
使用[weak self]
是没有意义的,因为didSet
不会捕获任何内容,也永远不会创建保留周期。