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 е одговорен за неговото создавање и чување.