Shared ObservableObject is a convenient way to pass data between views and it seems like it's working for tracking and reacting to changes on published variables.
In terms of SwiftUI design paradigm, is this ok and a valid use of ObservableObject. Are there any downsides? If it is not the correct way, what would be the best way to track changes for views which might have a long parent hierarchy, always pass down the object from parent?
Shared object example:
class Obj: ObservableObject {
static var shared = Obj()
@Published var changed = false
}
struct SwiftUIView: View {
@ObservedObject var obj = Obj.shared
var body: some View {
Button {
obj.changed.toggle()
} label: {
Text("CHANGE")
}
}
}
struct OtherSwiftUIView: View {
@ObservedObject var obj = Obj.shared
@State var text = "HELLO"
var body: some View {
Text(text)
.onChange(of: obj.changed) { _ in
text = "BYE"
}
}
}