Junior — Middle
V čom sa líšia triedy StateObject a ObservableObject v kontexte správy stavu?
sobes.tech AI
Odpoveď od AI
V SwiftUI, ObservableObject a StateObject súvisia s riadením stavu, ale plnia odlišné úlohy:
-
ObservableObject: je protokol, ktorý musí implementovať trieda, aby jej zmeny mohli byť sledované v SwiftUI. Trieda, ktorá splní tento protokol, zverejňuje zmeny prostredníctvom vlastnosti
@Published. -
StateObject: je vlastnosť-obal, ktorá sa používa v pohľadoch na vytvorenie a uloženie inštancie triedy, ktorá zodpovedá
ObservableObject. Zabezpečuje, že objekt bude vytvorený iba raz a zostane zachovaný pri aktualizáciách pohľadu.
Príklad:
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
}
}
}
}
Tu je ViewModel trieda so stavom, a @StateObject v ContentView je zodpovedný za jej vytvorenie a uloženie.