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-ում։