Junior — Middle
Vəziyyətin idarə olunması kontekstində StateObject və ObservableObject sinifləri arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
SwiftUI-də ObservableObject və StateObject vəziyyət idarəetməsi ilə əlaqədardır, lakin fərqli rollar yerinə yetirirlər:
-
ObservableObject: bu, SwiftUI-də dəyişikliklərin izlənməsi üçün sinifin tətbiq etməli olduğu protokoldur. Bu protokola uyğun sinif,
@Publishedxüsusiyyəti vasitəsilə dəyişiklikləri yayımlayır. -
StateObject: bu, görünüşlərdə istifadə olunan və
ObservableObject-ə uyğun sinif nümunəsini yaratmaq və saxlamaq üçün istifadə olunan bir xüsusiyyət örtüyüdür. Bu, obyektin yalnız bir dəfə yaradılmasını və View yeniləmələri zamanı saxlanılmasını təmin edir.
Nümunə:
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
}
}
}
}
Burada, ViewModel vəziyyətə malik sinifdir və @StateObject ContentView daxilində onun yaradılması və saxlanmasından məsuldur.