Wat is het verschil tussen de klassen StateObject en ObservableObject in de context van statusbeheer?
sobes.tech AI
Antwoord van AI
In SwiftUI zijn ObservableObject en StateObject gerelateerd aan het beheer van de toestand, maar vervullen ze verschillende rollen:
-
ObservableObject: is een protocol dat een klasse moet implementeren zodat haar wijzigingen kunnen worden gevolgd in SwiftUI. De klasse die aan dit protocol voldoet, publiceert wijzigingen via de eigenschap
@Published. -
StateObject: is een wrapper-eigenschap die in views wordt gebruikt om een instantie van een klasse die
ObservableObjectvoldoet te creëren en op te slaan. Het zorgt ervoor dat het object slechts één keer wordt gemaakt en behouden blijft tijdens view-updates.
Voorbeeld:
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 is ViewModel een klasse met toestand, en @StateObject in ContentView is verantwoordelijk voor het creëren en opslaan ervan.