我通读了这个 SO didSet q&a和 Apple's Property Observers以及其他一些帖子。我似乎无法理解的是,在改变变量时使用 didSet 有什么好处,如果你在不使用属性观察器的情况下更改变量,它无论如何都会改变?
场景一:
var someVal = 0
someVal = 10
// someVal now holds 10
场景二:
var someVal: Int = 0{
didSet{
}
}
someVal = 10
// again someVal now holds 10
场景 3:
var someVal: Int = 0{
didSet{
if someVal > oldValue{
someVal = newValue
}
}
}
someVal = 10
// once again someVal holds a value of 10
我在场景 3 中看到的唯一一件事是,如果不满足条件,那么 someVal 将不会改变。但是我可以简单地这样做,而不是将它添加到 didSet 中,并且会发生同样的事情。
var someVal = 0
var anotherVal = 10
if someVal < anotherValue{
someVal = anotherValue
}
// once again someVal holds a value of 10
那么除了在 didSet 观察者中添加条件之外还有什么好处呢?