我熟悉属性观察者的意义以及如何使用它。 但是,我真正不明白的是何时使用它们。 在我看来,这没关系.. 如果我使用didset,我可以使用属性本身使用oldValue或新值。如果我使用的是willset,我可以使用属性本身使用newValue或旧值。 所以.. oldValue在didset中它就像在setset中的属性本身一样,而newValue在willSet中就像属性本身在didset中一样:
var propObserve = 1 {
willSet {
print("my previous value was \(propObserve) and my future value will be \(newValue)")
}
didSet {
print("my previous value was \(oldValue) and my future value will be \(propObserve)")
}
}
propObserve = 2
我将从每个人那里获得相同的印刷品。 我理解willSet执行之前,并且在使用新值设置属性之后执行didSet但是,我仍然可以在两种情况下使用新旧值(在willSet和didSet中)
Q1:何时更喜欢使用一个而不是另一个? Q2:你能给我一个具体的例子吗?
提前致谢
答案 0 :(得分:1)
每种情况都有很多用例,但这里有几个例子。
使用willSet
对新值执行验证,将其限制为某个数值范围,将其四舍五入,或将其保存为以前值的历史记录。使用willSet
使程序员能够在赋值之前更改值。
使用didSet
在值更改后执行任何操作,例如更新用户界面,重新加载表视图,将某些内容记录到API或更改其他相关值。使用didSet
分配值并允许根据该分配采取操作。
在其他一些用例中,要么就足够了。