能否让 didSet 在 Swift 初始化时被调用?
你好!我是 Swift 新手,遇到了属性观察者的意外行为。我有一个类,其中包含一个 stored property,并为其设置了 didSet,以便在每次值更改时执行验证或更新 UI。但我注意到,当我在初始化器中设置属性值时,didSet 不会被调用。以下是一个示例:
```swift
class Temperature {
var celsius: Double = 0 {
didSet {
print("温度已更改为 \(celsius)°C")
// 这里我想更新 UI 或进行验证
}
}
init(celsius: Double) {
self.celsius = celsius // didSet 不会被调用!
}
}
```
当我创建对象 `let temp = Temperature(celsius: 25)` 时,我期望在控制台看到 "温度已更改为 25.0°C",但什么也没有发生。我明白这是 Swift 的一个特性,但我需要 didSet 在任何赋值时都触发,包括初始化。如何绕过这个限制?是否有更优雅的解决方案?