Insíonn na fillteoirí airí seo go léir do SwiftUI agus . Is é an scoilt lárnach ná (, ) i gcoinne (, , ), chomh maith le cé atá freagrach as saolré an réada.
@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)") }
}
| Fillteoir | Cineál | Úinéireacht | Úsáid nuair |
|---|---|---|---|
@State | luach | an radharc seo | staid áitiúil shimplí |
@Binding | luach | tuismitheoir | leanbh ag cur eagair ar staid an tuismitheora |
@StateObject | tagairt | an radharc seo (cruthaithe uair amháin) | cruthaíonn an radharc an múnla |
@ObservedObject | tagairt | in áit eile | múnla curtha isteach |
@EnvironmentObject | tagairt | sinsear | roinnte go domhain sa chrann |
@StateObject vs @ObservedObject an gaiste clasaiceach. Nuair a chruthaítear múnla le @ObservedObject var m = Model() déantar é a ationscnamh ag gach athrindreáil, ag cailleadh staide go ciúin. Úsáid @StateObject cibé áit a chruthaíonn an radharc an réad.@EnvironmentObject ag am rite mura ndearna sinsear ar bith é a instealladh trí .environmentObject(...).Is é roghnú an fhillteora mhícheart an fhoinse is mó d'fhabhtanna staide SwiftUI — luachanna ag preabadh, athshocruithe ar scrollú, nó radhairc nach nuashonraítear riamh. Cuireann agallóirí an cheist seo toisc go nochtann an freagra ar @StateObject vs @ObservedObject láithreach an dtuigeann tú múnla úinéireachta SwiftUI.
Leabharlann de cheisteanna agallaimh TF le freagraí mionsonraithe — ó Shóisearach go Sinsearach.
Síntiús