Swift 继承属性观察器
2020-08-12 本文已影响0人
幸运者_Lucky
关于 didSet
和 willSet
这两个方法, 在继承的时候, 父类的也会执行, 所以尽量不要像下面那样来实现代码, 在不知道父类属性具体的实现的情况下, 很可能造成错误, 如果想覆盖掉父类的实现, 可以自己重新实现 getter
和 setter
class A {
var x = 1
var a = 10 {
didSet {
print("AAAA")
x *= 10
}
}
}
class AA: A {
override var a: Int {
didSet {
print("\(a)")
x *= 100
}
}
}
let a = A()
a.a = 20
let aa = AA()
aa.a = 30
print(aa.x)