Sobes.tech
Junior — Middle

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 ObservableObject entspricht. 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.