Mi a különbség a StateObject és az ObservableObject osztályok között az állapotkezelés kontextusában?
sobes.tech MI
Válasz az MI-től
SwiftUI-ban az ObservableObject és a StateObject a állapotkezeléssel kapcsolatosak, de különböző szerepeket töltenek be:
-
ObservableObject: ez egy protokoll, amelyet egy osztálynak kell megvalósítania, hogy változásait nyomon követhessük SwiftUI-ban. Az ehhez a protokollhoz tartozó osztály a
@Publishedtulajdonságon keresztül teszi közzé a változásokat. -
StateObject: ez egy wrapper tulajdonság, amelyet nézetekben használnak egy
ObservableObject-nek megfelelő osztály példányának létrehozására és tárolására. Biztosítja, hogy a objektum csak egyszer jöjjön létre, és megmaradjon a nézet frissítései során.
Példa:
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
}
}
}
}
Itt a ViewModel egy állapottal rendelkező osztály, és a @StateObject a ContentView-ben felelős a létrehozásáért és tárolásáért.