Junior — Middle
სტატუსის მართვის კონტექსტში StateObject და ObservableObject კლასების განსხვავება რა არის?
sobes.tech AI
პასუხი AI-სგან
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-ში პასუხისმგებელია მის შექმნაზე და შენახვაზე.