我有一个程序员想要在 Swift 中使用单例作为 ObservableObject。这确实有效,但对我来说这似乎不是正确的用法。这是一个例子:
@Observable final class ModelData {
var counter: Int
static var shared = ModelData()
init() {
counter = 0
}
}
struct ContentView: View {
@State var model = ModelData.shared
var body: some View {
VStack {
Button("Count") {
model.counter += 1
}
.font(.title)
Button("Count") {
ModelData.shared.counter += 1
}
.font(.title)
Text("\(model.counter)")
.font(.title)
}
.padding()
}
}
在 Swift 中使用单例作为可观察对象可以吗?或者以这种方式使用它会产生任何不可预见的后果吗?
为什么这对您来说似乎不是正确的用法?您认为问题是什么?肯定会出现“不可预见”的后果,具体取决于它的使用方式;例如,如果您修改 MainActor 上的 ModelData,但 SwiftUI 观察到的任何对象都是如此。您有什么可预见的后果? (将其变成正确的答案:不。没关系。很常见,甚至。)