
पिछले हफ्ते, मैंने देखा कि समुदाय UIKit से स्विफ्टयूआई के लिए साबित विकास पैटर्न को स्थानांतरित करने की कोशिश कर रहा है। लेकिन मुझे यकीन है कि SwiftUI का उपयोग करके कुशल कोड लिखने का सबसे अच्छा तरीका है कि आप UIKit के बारे में सब कुछ भूल जाएं और उपयोगकर्ता इंटरफ़ेस विकास के मामले में अपनी सोच को पूरी तरह से बदल दें। इस हफ्ते मैं UIKit और SwiftUI का उपयोग करके विकास के बीच मुख्य अंतर के बारे में बात करूंगा।
मतभेदों की परिभाषा
UIKit iOS प्लेटफॉर्म के लिए यूजर इंटरफेस बनाने के लिए एक अनिवार्य ईवेंट-चालित ढांचा है। इसका मतलब है कि आपको घटनाओं के दौरान सभी राज्य परिवर्तनों को संभालना होगा जैसे कि दृश्य लोड करना, बटन क्लिक करना आदि। इस दृष्टिकोण का एक बड़ा नुकसान उपयोगकर्ता इंटरफ़ेस को उसके राज्य के साथ सिंक्रनाइज़ करने की कठिनाई है। जैसे ही राज्य बदलता है, आपको मैन्युअल रूप से जोड़ना / हटाना / दिखाना / छिपाना होगा और इसे एप्लिकेशन की वर्तमान स्थिति के साथ सिंक्रनाइज़ करना होगा।
SwiftUI सभी Apple प्लेटफार्मों के लिए उपयोगकर्ता इंटरफेस बनाने के लिए एक घोषणात्मक ढांचा है। इस मामले में कीवर्ड घोषणात्मक है। घोषणा का मतलब है कि डेवलपर को यह घोषित करने की आवश्यकता है कि वह क्या हासिल करना चाहता है, और रूपरेखा इस बात का ध्यान रखेगी। उपयोगकर्ता इंटरफ़ेस को प्रस्तुत करने का सबसे अच्छा तरीका फ्रेमवर्क जानता है।
UI = f(state)
SwiftUI में, यूजर इंटरफेस अपने राज्य का एक कार्य है। इसका मतलब यह है कि जब भी कोई दृश्य बदलता है, तो वह अपनी बॉडी प्रॉपर्टी को पुन: गिनता है और एक नया दृश्य बनाता है। निम्नलिखित उदाहरण पर विचार करें।
struct ContentView: View { @ObservedObject var store: Store var body: some View { Group { if store.isLoading { Text("Loading...") .font(.subheadline) } else { Image("photo") .font(.largeTitle) } } } }
उपरोक्त उदाहरण में, एक दृश्य है जो पाठ "लोड हो रहा है ..." प्रदर्शित करता है और डाउनलोड के अंत में चित्र प्रदर्शित करता है।
ObserverObject इस दृश्य की स्थिति है, और जैसे ही यह बदलता है, SwiftUI शरीर की संपत्ति का पुन: संयोजन करता है और एक नया दृश्य प्रदान करता है। UIKit का उपयोग करते हुए विकास के दौरान, प्रस्तुति पदानुक्रम के तत्वों को मैन्युअल रूप से छिपाना / दिखाना आवश्यक है, लेकिन SwiftUI में एक लोडिंग संकेतक को जोड़ने / हटाने की आवश्यकता नहीं है। एक दृश्य की स्थिति का वर्णन करने के लिए SwiftUI में कई तरीके हैं, उनके बारे में अधिक जानने के लिए, "
SwiftUI में संपत्ति आवरण " पर एक नज़र डालें।
अब जब दृश्य स्थिति में परिवर्तन होता है तो हम उस पर करीब से नज़र डालते हैं। SwiftUI में विचारों की वर्तमान पदानुक्रम की छाप है और जैसे ही इसकी स्थिति बदलती है, यह एक नए दृश्य की गणना करता है। SwiftUI मतभेदों को समझने और आवश्यक विचारों को स्वचालित रूप से जोड़ने / हटाने / अपडेट करने के लिए तुलना एल्गोरिदम लागू करता है। डिफ़ॉल्ट रूप से, SwiftUI विचारों को दिखाने / छिपाने के लिए / बाहर संक्रमण छवि में मानक का उपयोग करता है, लेकिन किसी अन्य एनीमेशन में परिवर्तन को मैन्युअल रूप से बदलना भी संभव है। SwiftUI में संक्रमण और एनिमेशन के बारे में अधिक जानने के लिए, मेरे लेख "
SwiftUI में एनिमेशन " पर एक नज़र डालें।
प्रस्तुति पदानुक्रम
आइए विचारों के पदानुक्रम के बारे में बात करते हैं और कैसे स्विफ्टयूआई वास्तव में विचारों की संरचना को प्रदर्शित करता है। सबसे पहली बात जो मैं उल्लेख करना चाहता हूं वह यह है कि स्विफ्टयूआई एक-से-एक मैपिंग द्वारा दृश्य की संरचना को प्रदर्शित नहीं करता है। आप जितने चाहें उतने व्यू कंटेनर का उपयोग करना संभव है, लेकिन अंत में, स्विफ्टयूई केवल उन विचारों को प्रदर्शित करता है जो प्रतिपादन के लिए समझ में आता है। इसका मतलब यह है कि आप उनके तर्क को छोटे अभ्यावेदन में निकाल सकते हैं, और फिर उन्हें अनुप्रयोग में लिखें और पुन: उपयोग कर सकते हैं। चिंता न करें, इस मामले में आवेदन प्रदर्शन को नुकसान नहीं होगा। SwiftUI में विचार बनाने के बारे में अधिक जानने के लिए,
इस लेख पर एक नज़र डालें।
स्विफ्टयूआई में जटिल अभ्यावेदन के पदानुक्रम को समझने का सबसे अच्छा तरीका है कि इसका प्रकार प्रदर्शित किया जाए। स्विफ्टयूआई एक स्थिर प्रकार की प्रणाली का उपयोग करता है ताकि अंतर को जल्दी से निर्धारित किया जा सके। सबसे पहले, यह दृश्य के प्रकार की जांच करता है, और फिर दृश्य के घटकों के मूल्यों की जांच करता है। मैं काम करने वाले कोड में प्रतिबिंबों का उपयोग करने का प्रशंसक नहीं हूं, लेकिन यह सीखने की प्रक्रिया में बहुत उपयोगी है।
print(Mirror(reflecting: ContentView(store: .init()).body))
मिरर संरचना का उपयोग करते हुए, आप वास्तविक प्रकार की ContentView बॉडी प्रदर्शित कर सकते हैं और यह पता लगा सकते हैं कि SwiftUI कैसे काम करता है।
निष्कर्ष
इस सप्ताह, हमने UIKit और SwiftUI के बीच मुख्य अंतर सीखा और SwiftUI में तुलना एल्गोरिथ्म की विस्तार से जांच की। मुझे उम्मीद है कि आपको लेख पसंद आया होगा। पढ़ने के लिए धन्यवाद और आपको अगले सप्ताह देखने के लिए!