美文网首页
SwiftUI:属性包装器@Published的使用示例

SwiftUI:属性包装器@Published的使用示例

作者: 喔牛慢慢爬 | 来源:发表于2024-09-17 09:44 被阅读0次

    @Published用于将对象的属性标记为可以发布更改通知的。这意味着当该属性的值发生变化时,任何订阅了这个属性的观察者都会收到通知。@Published 通常与遵循 ObservableObject 协议的对象一起使用。

    示例

    import Combine  
      
    class MyModel: ObservableObject {  
        @Published var count = 0  
      
        func increment() {  
            count += 1  
        }  
    }  
      
    struct MyView: View {  
        @ObservedObject var model = MyModel()  
      
        var body: some View {  
            VStack {  
                Text("Count: \(model.count)")  
                Button("Increment") {  
                    model.increment()  
                }  
            }  
        }  
    }
    

    在这个例子中,MyModel 类有一个 @Published 属性 count。当 count 的值改变时,任何观察 MyModel 对象的视图都会自动更新以反映新的值。在 MyView 结构体中,我们使用 @ObservedObject 属性包装器来观察 MyModel 对象,这样当 count 值改变时,视图中的 Text 视图会自动更新。

    注意事项

    需要注意的是,@Published 只能在遵循 ObservableObject 协议的类中使用。此外,由于 @Published 属性会自动合成 objectWillChange 发布者,因此你不需要手动定义它。当你更改 @Published 属性时,objectWillChange 会向所有观察者发送更改通知。

    总结

    在 SwiftUI 中,@ObservedObject 和 @Published 的组合使用是一种非常强大的模式,用于在视图和模型之间建立响应式绑定,使得当模型状态改变时,视图能够自动更新。

    相关文章

      网友评论

          本文标题:SwiftUI:属性包装器@Published的使用示例

          本文链接:https://www.haomeiwen.com/subject/qujvljtx.html