Junior — Middle
Care este diferența dintre clasele StateObject și ObservableObject în contextul gestionării stării?
sobes.tech AI
Răspuns de la AI
În SwiftUI, ObservableObject și StateObject sunt legate de gestionarea stării, dar îndeplinesc roluri diferite:
-
ObservableObject: este un protocol pe care o clasă trebuie să îl implementeze pentru ca modificările sale să poată fi urmărite în SwiftUI. Clasa care respectă acest protocol publică modificări prin proprietatea
@Published. -
StateObject: este o proprietate de tip wrapper folosită în vizualizări pentru a crea și păstra o instanță a unei clase care respectă
ObservableObject. Asigură că obiectul va fi creat o singură dată și va fi păstrat în timpul actualizărilor vizualizării.
Exemplu:
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
}
}
}
}
Aici, ViewModel este o clasă cu stare, iar @StateObject în ContentView se ocupă de crearea și păstrarea acesteia.