Observation|使用 didSet/willSet 属性观察器

了解如何使用 Swift 中的属性观察器。

Observation|使用 didSet/willSet 属性观察器

didSet 和 willSet 是 Swift 中的属性观察器(property observer),它会在属性值变化后自动调用:

var someProperty: Int = 0 {
    willSet {
        print("即将从 \(someProperty) 变为 \(newValue)")
    }
    didSet {
        print("已从 \(oldValue) 变为 \(someProperty)")
    }
}

willSetdidSet的区别:

  • willSet: 在属性值被设置前调用,可以通过 newValue 访问即将设置的新值
  • didSet:在属性改变后执行,可以访问 oldValue

这些观察器在需要在属性值改变前/后执行额外操作时非常有用。

基本用法

根据论坛信息显示,之前在 Observable 类中使用 didSetwillSet 可能无法正常工作。

因此,2025 年 4 月,我在最新版本的 Xcode 和 iOS 版本上测试是否已经可用。

iOS 18.4 测试可用

在 Xcode 16.3 + iOS 18.4 上,测试可以正常工作:

iOS 17.4 测试可用

在 Xcode 16.3 + iOS 17.4 上,测试可以正常工作,输入和上面一致。

在 didSet 中调用 Actor?

确实可行。