Junior — Middle
Kādas ir atšķirības starp klasēm StateObject un ObservableObject stāvokļa pārvaldības kontekstā?
sobes.tech AI
Atbilde no AI
SwiftUI, ObservableObject un StateObject ir saistīti ar stāvokļa pārvaldību, bet pilda dažādas funkcijas:
-
ObservableObject: tas ir protokols, kuru klasei jāievieš, lai tās izmaiņas varētu tikt uzraudzītas SwiftUI. Klase, kas atbilst šim protokolam, publicē izmaiņas caur īpašību
@Published. -
StateObject: tas ir īpašības ietvars, kas tiek izmantots skatījumos, lai izveidotu un saglabātu klases instanci, kas atbilst
ObservableObject. Tas nodrošina, ka objekts tiks izveidots tikai vienreiz un tiks saglabāts skatījuma atjauninājumu laikā.
Piemērs:
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
}
}
}
}
Šeit, ViewModel ir stāvokli saturoša klase, un @StateObject ContentView ir atbildīgs par tās izveidi un saglabāšanu.