属性观察器
监控和响应属性值的变化,每次属性被设置值的时候都会调用属性观察器,即使新值和当前值相同的时候也不例外。
你可以在定义类为存储属性
添加属性观察器
;也可以为继承父类的存储属性
和计算属性
添加属性观察器
。
class StepCounter {
var totalSteps: Int = 0 {
willSet(newTotalSteps) {
print("将 totalSteps 的值设置为 \(newTotalSteps)")
}
didSet {
if totalSteps > oldValue {
print("增加了 \(totalSteps - oldValue) 步")
}
}
}
}
在属性观察器
中可以使用默认参数newValue
和oldValue
,访问新值和原本的值
newValue
是不可以修改的。
class StepCounter {
var totalSteps: Int = 0 {
willSet(newTotalSteps) {
print("将 totalSteps 的值设置为 \(newTotalSteps)")
}
didSet {
if totalSteps > oldValue {
totalSteps = oldValue // 可以修改新赋的值
}
}
}
}
存储属性在定义时提供初始值或者在构造器中初始化不会触发属性观察器