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