Skip to content

从 ObservableObject 迁移到 @Observable

ObservableObject 迁移到 @Observable,你会发现这是一个非常棒的简化过程!🚀 让我们一起看看如何操作,让你的代码更简洁、更高效。

拥抱 @Observable

@Observable 宏是 Swift 5.9 引入的 Observation 框架的核心。它能自动追踪属性变化,无需手动 objectWillChange.send()。这不仅减少了样板代码,还降低了出错的概率。🎉

  • 简化声明:ObservableObject 协议替换为 @Observable 宏。
  • 移除 objectWillChange 不再需要手动发送通知,框架会自动处理。

迁移步骤详解

迁移过程非常简单,只需几个步骤即可完成。

  1. 移除 ObservableObject 协议: 从你的类定义中删除 ObservableObject 协议。
  2. 添加 @Observable 宏: 在类定义前加上 @Observable
  3. 删除 objectWillChange.send() 移除所有手动发送的通知。

例如,以下代码展示了如何将一个 ObservableObject 类迁移到使用 @Observable 宏:

swift
// 之前的代码
class MyModel: ObservableObject {
    @Published var name: String = "" {
        willSet {
            objectWillChange.send()
        }
    }
}

// 迁移后的代码
@Observable
class MyModel {
    var name: String = ""
}

迁移的优势

使用 @Observable 宏,你会发现代码变得更加简洁易懂。

  • 减少代码量: 移除 objectWillChange 相关代码,减少了冗余。
  • 提高可读性: 代码逻辑更清晰,易于维护。
  • 性能优化: Observation 框架的自动追踪机制更加高效。

注意事项

虽然迁移过程简单,但仍需注意一些细节。

  • 确保使用 Swift 5.9+: @Observable 宏是 Swift 5.9 引入的,确保你的项目使用该版本或更高版本。
  • 测试: 迁移后进行充分测试,确保所有功能正常运行。

通过以上步骤,你可以轻松地将 ObservableObject 迁移到 @Observable,享受更简洁、高效的 SwiftUI 开发体验!👍

本站使用 VitePress 制作