Worin unterscheiden sich die Klassen StateObject und ObservableObject im Kontext der Zustandsverwaltung?
sobes.tech KI
Antwort von AI
In SwiftUI sind ObservableObject und StateObject mit der Zustandsverwaltung verbunden, erfüllen jedoch unterschiedliche Rollen:
-
ObservableObject: ist ein Protokoll, das eine Klasse implementieren muss, damit ihre Änderungen in SwiftUI verfolgt werden können. Die Klasse, die dieses Protokoll erfüllt, veröffentlicht Änderungen über die Eigenschaft
@Published. -
StateObject: ist eine Wrapper-Eigenschaft, die in Ansichten verwendet wird, um eine Instanz einer Klasse zu erstellen und zu speichern, die
ObservableObjectentspricht. Sie stellt sicher, dass das Objekt nur einmal erstellt wird und bei View-Updates erhalten bleibt.
Beispiel:
class ViewModel: ObservableObject {
@Published var count = 0
}
struct ContentView: View {
@StateObject private var viewModel = ViewModel()
var body: some View {
VStack {
Text("Count: \(viewModel.count)")
Button("Increment") {
viewModel.count += 1
}
}
}
}
Hier ist ViewModel eine Klasse mit Zustand, und @StateObject in ContentView ist für die Erstellung und Speicherung verantwortlich.