SwiftUI @ObservedObject,@State 和 @EnvironmentObject 有什么区别?

2 min read
  1. @State:用于存储当前视图状态的属性,一旦这些属性修改了,该视图将会重新渲染。

  2. @ObservedObject:用于监视来自外部的对象变化,当监视到变化时,将自动重新渲染视图。该属性通常用于与自定义类和结构体一起使用。

  3. @EnvironmentObject:与@ObservedObject类似,但是它从全局环境中获取值,因此多个视图可以共享相同的值。可以使用该属性传递应用程序级别的数据,例如用户信息或全局设置。

总之,@State是用于管理视图状态的属性,@ObservedObject用于监视来自外部的对象变化,@EnvironmentObject用于从全局环境中访问共享的数据。