我是一个样本类和Int
类型的属性,如下所示:
class StepCounter {
var totalSteps: Int = 0 {
willSet(newTotalSteps) {
print("about to set steps to \(newTotalSteps)")
}
didSet {
if totalSteps > oldValue {
print("Added \(totalSteps - oldValue) steps")
}
}
}
}
现在,当我创建这个类的实例并为我的var totalSteps
分配一个数字时,如下所示:
let anObj = StepCounter()
anObj.totalSteps = 2000
我按预期得到控制台输出:
about to set steps to 2000
Added 2000 seteps
但是当我执行anObj.totalSteps -= 1
时,我只会willSet
输出about to set steps to 1999
,而didSet
永远不会被执行。发生了什么以及为什么我没有执行willSet
打印语句?请帮助,谢谢。
答案 0 :(得分:1)
在你的didSet
中:
if totalSteps > oldValue
但是当你执行anObj.totalSteps -= 1
时,总步数不会超过旧值!
因此print
未按预期执行。 :)