Waɗannan property wrappers duka suna gaya wa SwiftUI da . Babban rarrabuwa shi ne (, ) da (, , ), da kuma wanda ke da alhakin tsawon rayuwar object.
@State@Binding@StateObject@ObservedObject@EnvironmentObject// Value state OWNED by this view
struct Toggle: View {
@State private var isOn = false // local source of truth
var body: some View {
Switch(isOn: $isOn) // $ makes a Binding
}
}
// A two-way reference to state owned ELSEWHERE
struct Switch: View {
@Binding var isOn: Bool // no ownership; reads+writes parent
var body: some View { Button("\(isOn)") { isOn.toggle() } }
}
final class CartModel: ObservableObject {
@Published var items: [Item] = [] // change => views re-render
}
struct CartScreen: View {
@StateObject private var model = CartModel() // OWNS: created once, survives re-renders
var body: some View { CartList(model: model) }
}
struct CartList: View {
@ObservedObject var model: CartModel // observes; owned by a parent
var body: some View { Text("\(model.items.count)") }
}
| Wrapper | Type | Mallaka | Yi amfani lokacin |
|---|---|---|---|
@State | value | wannan view | local state mai sauƙi |
@Binding | value | parent | child yana gyara state na parent |
@StateObject | reference | wannan view (an ƙirƙira sau ɗaya) | view ke ƙirƙirar model |
@ObservedObject | reference | wani wuri | an mika model |
@EnvironmentObject | reference | ancestor | an raba shi cikin zurfin tree |
@StateObject da @ObservedObject shi ne tarko na gargajiya. Ƙirƙirar model da @ObservedObject var m = Model() yana sake ƙirƙirar shi a duk sake render, yana rasa state a shiru. Yi amfani da @StateObject a duk inda view ke ƙirƙirar object.@EnvironmentObject yana crash a runtime idan babu ancestor da ya sanya shi ta .environmentObject(...).Zaɓar wrapper mara kyau shi ne tushe na ɗaya na SwiftUI state bugs — values masu ƙyaftawa, resets a lokacin scroll, ko views da ba su taɓa sabuntawa ba. Masu tambayoyi suna yin wannan tambaya saboda amsar @StateObject da @ObservedObject tana nuna nan take ko ka fahimci ownership model na SwiftUI.
Ɗakin karatu na tambayoyin hira na IT tare da amsoshi cikakke — daga Junior zuwa Senior.
Ba da Gudummawa