众所周知,当然,didSet 不会再次从 didSet 内部在同一个对象上运行。(例如。)
然而。似乎:限制不仅适用于该对象,而且可能适用于同一类的任何对象。
这是 Playground 的复制粘贴测试用例。
class C {
var Test: Bool = false {
didSet {
print("test.")
for c in r {
c.Test = true
}
}
}
var r:[C] = []
}
var a:C = C()
var b:C = C()
var c:C = C()
a.r = [b, c]
a.Test = false
不工作!
class C {
var Test2: Bool = false {
didSet {
print("test2.")
global.Test2 = true
}
}
}
var global:C = C()
var a:C = C()
a.Test2 = false
不工作!
这是一个 Swift 错误吗?
如果没有,实际的限制是什么?它不会运行从 didSet 开始的任何 didSet(无论如何)?同一个班级?;同一个超级班?或者?
这在doco中到底是在哪里解释的?
哇。需要知道......具体的实际限制是什么?