Junior — Middle
Qual è la differenza tra le classi StateObject e ObservableObject nel contesto della gestione dello stato?
sobes.tech AI
Risposta dell'AI
In SwiftUI, ObservableObject e StateObject sono legati alla gestione dello stato, ma svolgono ruoli diversi:
-
ObservableObject: è un protocollo che una classe deve implementare affinché le sue modifiche possano essere monitorate in SwiftUI. La classe conforme a questo protocollo pubblica modifiche tramite la proprietà
@Published. -
StateObject: è una proprietà wrapper usata nelle viste per creare e conservare un'istanza di una classe conforme a
ObservableObject. Garantisce che l'oggetto venga creato una sola volta e rimanga durante gli aggiornamenti della View.
Esempio:
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
}
}
}
}
Qui, ViewModel è una classe con stato, e @StateObject in ContentView si occupa della sua creazione e conservazione.