SwiftUI 中的属性

228 阅读1分钟
  • Property - 一般数据展示,不需要同步数据修改操作

  • @State - 数据修改需要同步 UI, 生命周期只局限于当前 View,一般修饰数据为结构体或枚举

  • @ObservedObject - 修饰数据为引用类型,数据的生命周期可以根据情况灵活控制,通常情况下一个顶级视图对应一个 ObservedObject

  • @StateObject - 修饰数据为引用类型,生命周期跟 View 保持一致,可看做 @State 和 @ObservedObject 的结合体

  • @EnvironmentObject - 全局的数据绑定机制,生命周期与绑定到视图的生命周期一致

  • @SceneStorage - View 级别的数据缓存,注意只需要针对需要缓存的数据进行缓存

  • @AppStorage - App 级别的数据缓存,所有子视图都可以访问

  • @Binding - 父子视图之间进行数据源共享,双向绑定,一般只接受处理值类型



ViewView间的公用数据使用@State + @Binding。

多个View与Class间的公用数据:对View@ObservedObject,让Class满足ObservableObject协议。

父View与子View对Class间的公用数据:父View@ObservedObject,子View@EnvironmentObject,Class满足ObservableObject协议