Swift में Observation: पूरी गाइड उदाहरणों के साथ
1. Observation क्या है और इसकी आवश्यकता क्यों है?
Observation एक नया फ्रेमवर्क है जिसे Apple ने WWDC 2023 में पेश किया। यह Swift में डेटा पर नज़र रखने के तरीके को पूरी तरह से बदल देता है। यह Combine के पुराने @Published और ObservableObject मॉडल की जगह लेता है, और ज़्यादा परफॉरमेंट, थ्रेड-सेफ और समझने में आसान तरीका प्रदान करता है। Observation का आधार Observable प्रोटोकॉल और @Observable मैक्रो है, जो पूरे ऑब्जेक्ट के बजाय अलग-अलग प्रॉपर्टी के स्तर पर बदलावों को ट्रैक करने की सुविधा देता है।
इसकी आवश्यकता क्यों है? आज iOS, macOS, watchOS और tvOS के लिए ऐप डेवलपमेंट में SwiftUI मुख्य फ्रेमवर्क है। SwiftUI को कुशलता से काम करने के लिए एक ऐसे मैकेनिज़्म की ज़रूरत होती है जो डेटा में बदलाव होने पर उसे बताए, ताकि वह इंटरफ़ेस के केवल उन हिस्सों को ही दोबारा रेंडर करे जो वास्तव में बदले हैं। पुराने ObservableObject तरीके में किसी भी प्रॉपर्टी में बदलाव होने पर पूरे View को दोबारा रेंडर किया जाता था, जिससे अनावश्यक कैलकुलेशन होती थी और परफॉरमेंस कम हो जाती थी। Observation इस समस्या को हल करता है और अलग-अलग प्रॉपर्टी के स्तर पर सटीक बदलावों को ट्रैक करता है।
मुख्य लाभ: Observation Swift की स्टैंडर्ड लाइब्रेरी का हिस्सा है (iOS 17, macOS 14, tvOS 17, watchOS 10 से शुरू), इसके लिए किसी अतिरिक्त डिपेंडेंसी की ज़रूरत नहीं है, यह पूरी तरह से थ्रेड-सेफ है (किसी भी थ्रेड से बदलाव किए जा सकते हैं और नोटिफिकेशन मेन थ्रेड पर डिलीवर होते हैं), और यह @Bindable मैक्रो और नए .onChange(of:) मॉडिफायर के ज़रिए SwiftUI के साथ गहराई से इंटीग्रेटेड है।
2. इंस्टॉलेशन
Observation एक बिल्ट-इन Apple फ्रेमवर्क है। यह Swift 5.9 और Xcode 15 से Swift की स्टैंडर्ड लाइब्रेरी का हिस्सा है। किसी भी पैकेज मैनेजर (CocoaPods, Swift Package Manager, Carthage) के ज़रिए अतिरिक्त इंस्टॉलेशन की ज़रूरत नहीं है।
Observation का उपयोग शुरू करने के लिए, बस इतना करें:
- Xcode 15 या उससे नया वर्शन इंस्टॉल करें।
- प्रोजेक्ट सेटिंग्स में सुनिश्चित करें कि Deployment Target iOS 17, macOS 14, tvOS 17 या watchOS 10 पर सेट है।
- जिस फ़ाइल में आप इसका उपयोग करना चाहते हैं, उसमें फ्रेमवर्क को इम्पोर्ट करें:
import Observation.
अगर आप SwiftUI का उपयोग कर रहे हैं, तो Observation को अलग से इम्पोर्ट करना ज़रूरी नहीं है — यह SwiftUI को इम्पोर्ट करने पर अपने आप उपलब्ध हो जाता है।
3. त्वरित शुरुआत — एक न्यूनतम काम करने वाला उदाहरण
चलिए एक सरल डेटा मॉडल और एक View बनाते हैं जो इसे प्रदर्शित करता है।
import SwiftUI
// 1. एक Observable क्लास बनाएँ
@Observable
class UserSettings {
var username: String = "अतिथि"
var isLoggedIn: Bool = false
}
// 2. View में इसका उपयोग करें
struct ContentView: View {
// @State जीवनचक्र प्रबंधन के लिए
@State private var settings = UserSettings()
var body: some View {
VStack(spacing: 20) {
Text("उपयोगकर्ता: \(settings.username)")
.font(.title)
TextField("नाम दर्ज करें", text: $settings.username)
.textFieldStyle(.roundedBorder)
.padding()
Toggle("लॉग इन करें", isOn: $settings.isLoggedIn)
.padding()
if settings.isLoggedIn {
Text("आप \(settings.username) के रूप में लॉग इन हैं")
.foregroundColor(.green)
} else {
Text("आप प्रमाणित नहीं हैं")
.foregroundColor(.red)
}
}
.padding()
}
}
इस उदाहरण में, @Observable मैक्रो स्वचालित रूप से UserSettings क्लास को बदल देता है ताकि वह अपनी प्रॉपर्टी में बदलावों को ट्रैक कर सके। SwiftUI स्वचालित रूप से केवल उन्हीं View को अपडेट करेगा जो बदली हुई प्रॉपर्टी पर निर्भर हैं।
पुस्तकालय में भी
PHP कार्य अनुसूचक: cron कार्यों और Task Scheduler के लिए पूर्ण मार्गदर्शिका
Elasticsearch C++ क्लाइंट: elasticlient पूर्ण गाइड
TypeScript में डेटाबेस माइग्रेशन: टूल्स और दृष्टिकोणों के लिए पूर्ण गाइड
PHP में PDF जनरेशन: सर्वश्रेष्ठ लाइब्रेरीज़ और कोड उदाहरण