gpt4 book ai didi

Swift 属性观察者,初始值

转载 作者:可可西里 更新时间:2023-11-01 00:33:22 27 4
gpt4 key购买 nike

Apple 文档指出:

The willSet and didSet observers of superclass properties are called when a property is set in a subclass initializer, after the superclass initializer has been called. They are not called while a class is setting its own properties, before the superclass initializer has been called.

这意味着如果我有某种类型:

enum State {
case disabled, enabled
}

和一些具有willSetdidSet 观察者的变量:

var state: State = .disabled {
willSet {
// do something
}
}

willSet 观察器不会被调用,直到我在该特定实例的初始化期间或之后显式设置 state 之后。

为什么会这样?作为一名开发人员,我会查看上面的代码并做出假设,而不是不合理地假设观察者 block 被调用以获得原始值,而与实例初始化无关。必须在初始化程序中设置 state = .disabled 以触发初始值的观察者,这似乎是一种反模式。

最佳答案

作为Hamish's comment指出,在 willSet 的情况下,state 可能没有有效值(在 didSet 的情况下,没有newValue 参数可能具有的有效值)。

关于Swift 属性观察者,初始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48915486/

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