SwiftUI @ObservedObject @StateObject 的区别

2 min read

SwiftUI提供了两种观察属性的方式,即 @ObservedObject 和 @StateObject。

@ObservedObject 观察外部对象的变化,当外部对象的状态发生变化时,@ObservedObject 属性将会刷新UI。 这是一种在视图中注入由其他对象控制的状态的方式。

@StateObject 是在视图内部创建和管理的对象,与 @ObservedObject 的不同之处在于,它是专用于该视图的,只能在该视图内部使用,当视图被销毁时,@StateObject 所引用的对象也被销毁。 而 @ObservedObject 则不同,可以在多个视图中共享。

简而言之,@ObservedObject 用于在视图中使用来自其他视图或其他源的对象的状态,而 @StateObject 则是专门为该视图而创建的,仅在该视图内部使用。