Dawn il-property wrappers kollha jgħidu lil SwiftUI u . Il-firda ewlenija hija bejn (, ) u (, , ), flimkien ma' min hu responsabbli għall-ħajja tal-oġġett.
@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 | Tip | Sjieda | Uża meta |
|---|---|---|---|
@State | value | dan il-view | stat lokali sempliċi |
@Binding | value | ġenitur | l-ulied jeditjaw l-istat tal-ġenitur |
@StateObject | reference | dan il-view (maħluq darba) | il-view joħloq il-mudell |
@ObservedObject | reference | band'oħra | il-mudell jgħaddi minn barra |
@EnvironmentObject | reference | antenat | maqsum fil-fond tas-siġra |
@StateObject vs @ObservedObject hija n-nassa klassika. Il-ħolqien ta' mudell b'@ObservedObject var m = Model() jerġa' joħolqu ma' kull re-render, u jitlef l-istat fis-skiet. Uża @StateObject kull fejn il-view joħloq l-oġġett.@EnvironmentObject jikkrexxja waqt ir-runtime jekk l-ebda antenat ma jkun injettah permezz ta' .environmentObject(...).L-għażla tal-wrapper ħażin hija l-ewwel sors ta' bugs tal-istat f'SwiftUI — valuri li jteptpu, resets meta tiskrolja, jew views li qatt ma jaġġornaw. L-intervistaturi jistaqsu dan għax it-tweġiba dwar @StateObject vs @ObservedObject immedjatament tikxef jekk tifhimx il-mudell tas-sjieda ta' SwiftUI.
Librerija ta' mistoqsijiet ta' intervisti tal-IT b'tweġibiet dettaljati — minn Junior sa Senior.
Iddona