یہ تمام property wrappers SwiftUI کو بتاتے ہیں کہ اور ۔ بنیادی تقسیم (، ) بمقابلہ (، ، ) کی ہے، اور ساتھ ہی یہ کہ 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 | ملکیت | کب استعمال کریں |
|---|---|---|---|
@State | value | یہی view | سادہ local state |
@Binding | value | کوئی parent | child parent کی state edit کرے |
@StateObject | reference | یہی view (ایک بار بنتا ہے) | view خود model بناتا ہے |
@ObservedObject | reference | کہیں اور | model باہر سے آتا ہے |
@EnvironmentObject | reference | کوئی ancestor | tree میں گہرائی تک share شدہ |
@StateObject بمقابلہ @ObservedObject کلاسک جال ہے۔ @ObservedObject var m = Model() سے model بنانا اسے ہر re-render پر دوبارہ instantiate کر دیتا ہے، جس سے state خاموشی سے ضائع ہو جاتی ہے۔ جہاں بھی view object کو خود بناتا ہے وہاں @StateObject استعمال کریں۔@EnvironmentObject runtime پر crash کر جاتا ہے اگر کسی ancestor نے اسے .environmentObject(...) کے ذریعے inject نہ کیا ہو۔غلط wrapper کا انتخاب SwiftUI state bugs کی سب سے بڑی وجہ ہے — جھلملاتی values، scroll پر reset، یا وہ views جو کبھی update نہیں ہوتے۔ Interviewers یہ سوال اس لیے پوچھتے ہیں کیونکہ @StateObject بمقابلہ @ObservedObject کا جواب فوراً ظاہر کر دیتا ہے کہ آپ SwiftUI کے ownership model کو سمجھتے ہیں یا نہیں۔
تفصیلی جوابات کے ساتھ IT انٹرویو سوالات کی ایک لائبریری — جونیئر سے سینئر تک۔
عطیہ دیں