Avatar ·

能否让 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 在任何赋值时都触发,包括初始化。如何绕过这个限制?是否有更优雅的解决方案?