Junior — Middle
Quelle est la différence entre les classes StateObject et ObservableObject dans le contexte de la gestion de l'état?
sobes.tech IA
Réponse de l'IA
En SwiftUI, ObservableObject et StateObject sont liés à la gestion de l'état, mais remplissent des rôles différents:
-
ObservableObject : c'est un protocole que doit implémenter une classe pour que ses changements puissent être suivis dans SwiftUI. La classe conforme à ce protocole publie des changements via la propriété
@Published. -
StateObject : c'est une propriété enveloppante utilisée dans les vues pour créer et stocker une instance d'une classe conforme à
ObservableObject. Elle garantit que l'objet est créé une seule fois et conservé lors des mises à jour de la vue.
Exemple:
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
}
}
}
}
Ici, ViewModel est une classe avec état, et @StateObject dans ContentView gère sa création et son stockage.