gpt4 book ai didi

Swift 属性观察器 - didset 与 willset 使用的示例

转载 作者:行者123 更新时间:2023-11-28 06:00:25 28 4
gpt4 key购买 nike

我熟悉属性观察者的含义以及如何使用它。但是,我真正不明白的是何时使用它们中的每一个。在我看来这无关紧要..如果我使用 didset,我可以使用属性本身来使用 oldValue 或新值。如果我使用 willset,我可以使用属性本身来使用 newValue 或旧值。所以.. didset 中的 oldValue 就像 willset 中的属性本身,willSet 中的 newValue 就像 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:你能给我一个具体的例子吗?

提前致谢

最佳答案

每个都有很多用例,但这里有几个例子。

使用 willSet 对新值执行验证,将其限制在特定的数值范围内,四舍五入,或将其保存到以前值的历史记录中。使用 willSet 使程序员能够在赋值之前更改值。

使用 didSet 在值更改后执行任何操作,例如更新用户界面、重新加载 TableView 、将某些内容记录到 API 或更改另一个相关值。使用 didSet 分配值并允许根据该分配执行操作。

在其他一些用例中,两者都可以。

关于Swift 属性观察器 - didset 与 willset 使用的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50005913/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com