Sobes.tech
Junior — Middle

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 @Published tulajdonsá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.