Junior — Middle
Holatni boshqarish kontekstida StateObject va ObservableObject sinflari qanday farq qiladi?
sobes.tech AI
AIdan javob
SwiftUI'da ObservableObject va StateObject holatni boshqarish bilan bog'liq, ammo ular turli rollarni bajaradi:
-
ObservableObject: bu protokol bo'lib, uni amalga oshiradigan sinf SwiftUI'da o'zgarishlarni kuzatish uchun kerak. Bu protokolga mos keladigan sinf
@Publishedxususiyati orqali o'zgarishlarni e'lon qiladi. -
StateObject: bu xususiyat-qarshi, u ko'rinishlarda
ObservableObjectga mos keladigan sinf nusxasini yaratish va saqlash uchun ishlatiladi. Bu ob'ektning faqat bir marta yaratilishini va View yangilanishlari davomida saqlanib qolishini ta'minlaydi.
Misol:
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
}
}
}
}
Bu yerda, ViewModel holatga ega sinf, va @StateObject ContentView ichida uning yaratilishi va saqlanishi uchun javobgardir.