Sobes.tech
Junior — Middle

Čime se klase StateObject i ObservableObject razlikuju u kontekstu upravljanja stanjima?

sobes.tech АИ

Одговор од АИ

У SwiftUI, ObservableObject и StateObject су поврзани со управувањето со состојбата, но имаат различни улоги:

  • ObservableObject: е протокол кој треба да го имплементира класа за нејзините промени да можат да се следат во SwiftUI. Класата која го исполнува овој протокол ги објавува промените преку својството @Published.

  • StateObject: е својство-обвивка кое се користи во прегледи за создавање и чување на примерок од класа која одговара на ObservableObject. Гарантира дека објектот ќе биде создаден само еднаш и ќе остане при ажурирањата на прегледот.

Пример:

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
            }
        }
    }
}

Тука, ViewModel е класа со состојба, а @StateObject во ContentView е одговорен за неговото создавање и чување.