2 Star 23 Fork 10

小弟调调/swiftui-example

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
README.md 1.59 KB
一键复制 编辑 原始数据 按行查看 历史

什么是 @Published 属性包装器?

@PublishedSwiftUI 中最有用的属性包装器之一,它使我们能够创建可观察的对象,这些对象会在发生更改时自动宣布。 SwiftUI 将自动监视此类更改,并重新调用所有依赖于数据的视图的 body 属性。

实际上,这意味着只要更改带有标记为 @Published 的属性的对象,就会重新加载使用该对象的所有视图以反映这些更改。

例如,如果我们有一个这样的可观察对象:

class Bag: ObservableObject {
    var items = [String]()
}

这符合 ObservableObject 协议,这意味着 SwiftUI 的视图可以监视它的更改。 但是,由于它的唯一属性未标记为 @Published,因此不会发送任何更改通知-您可以将项目自由添加到数组中,而视图也不会更新。

如果您希望每当添加或删除项目时都发送变更公告,则可以使用 @Published 进行标记,如下所示:

class Bag: ObservableObject {
    @Published var items = [String]()
}

您无需执行其他任何操作 - @Published 属性包装器可以有效地将 willSet 属性观察者添加到项目中,这样任何更改都会自动发送给观察者。

如您所见,@Published 是选择加入的–您需要列出应该引起公告的属性,因为默认情况下,更改不会导致重新加载。 这意味着您可以拥有存储缓存的属性,供内部使用的属性等,并且它们不会强制 SwiftUI 在更改视图时重新加载视图,除非您用 @Published 专门标记它们。

Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Swift
1
https://gitee.com/jaywcjlove/swiftui-example.git
git@gitee.com:jaywcjlove/swiftui-example.git
jaywcjlove
swiftui-example
swiftui-example
main

搜索帮助