SwiftUI属性修饰符用法总结

792 阅读1分钟

@State
修饰的变量是值传递的,所以作用范围在当前视图,变量值变化后会触发相关的View刷新。

@Binding
修饰的变量会变成引用的形式传递,保证持有的值是一致的。

@ObservedObject
和State作用类似,对于变量只是引用,且对象所属的类要遵从ObservableObject协议,要监视的属性用@Published修饰。其生命周期不由创建它的View所持有,需要开发者自行管理。

@StateObject
ObservedObject的区别是生命周期由创建它的View所持有,无需开发者手动管理。

@EnvironmentObject
对所有View可见,因此变量可以在任意View之间传递,调用根视图的environmentObject()方法传递变量,以便所有的子视图可以访问它。其所属的类同样要遵从ObservableObject协议。

@Environment
读写环境变量,内置了系统的一些公共变量,也可以自定义。