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 масъул барои эҷод ва нигоҳдории он мебошад.