SwiftUI 中可以使用 @StateObject 属性包装器来创建和监视外部对象。以下是一个简单的示例,演示了如何使用 @StateObject 创建和监视一个自定义对象:
import SwiftUI
// 自定义对象
class MyObject: ObservableObject {
@Published var count = 0
}
struct ContentView: View {
// 使用 @StateObject 属性包装器创建 MyObject 对象
@StateObject var myObject = MyObject()
var body: some View {
VStack {
// 监视 myObject 的 count 属性,当其发生变化时刷新视图
Text("Count: \(myObject.count)")
.padding()
// 按钮点击时增加 myObject 的 count 属性
Button("Add") {
myObject.count += 1
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
在这个示例中,我们首先定义了一个自定义对象 MyObject
,其中包含了一个 @Published
属性 count
。接着在 ContentView
中使用 @StateObject
属性包装器创建 myObject
实例,并在后面的视图中使用它。当我们点击 Add
按钮时,会增加 myObject
的 count
属性的值。在视图中使用 Text
显示 myObject
的 count
属性的值,并使用 padding()
添加一些空白间隙。
值得注意的是,当我们使用 @StateObject
属性包装器创建对象时,SwiftUI 会自动处理对象的内存管理,确保对象在视图层次结构中仅被实例化一次。这样可以避免不必要的开销,并确保对象的状态始终与应用程序的其余部分同步。