मैं एक आईओएस स्थिर पुस्तकालय डिजाइन कर रहा हूं जिसका उपयोग अन्य डेवलपर्स द्वारा किया जाएगा। इस पुस्तकालय को अपना खुद का मोडल यूआई प्रदान करने की जरूरत है। मैं इसे पूरा करने के लिए एप्लिकेशन और इस लाइब्रेरी के बीच इंटरफ़ेस को डिज़ाइन करने का सबसे आसान तरीका ढूंढ रहा हूं। मुझे केवल आईओएस 4.0 और उससे ऊपर का समर्थन करने की आवश्यकता है।आईओएस स्थैतिक पुस्तकालय को डिजाइन करने का सबसे आसान तरीका क्या है जो अपना मोडल यूआई प्रदान करता है?
असहज वास्तुकला
मेरे स्थिर पुस्तकालय एक वर्ग के साथ एक बहुत ही सरल एपीआई है। एप्लिकेशन का ऐपडिलेगेट इस वर्ग को तुरंत चालू करता है और खुद को एक प्रतिनिधि के रूप में सेट करता है ताकि वह अधिसूचनाएं प्राप्त कर सके। जब एप्लिकेशन लाइब्रेरी को अपना यूआई दिखाने के लिए चाहता है तो यह एक विधि को कॉल करता है, और फिर जब पुस्तकालय अपने काम के साथ किया जाता है तो यह प्रतिनिधि प्रोटोकॉल के तरीकों में से एक के माध्यम से अधिसूचना भेजता है।
मैं इसे पूरा करने के दो तरीके देख सकता हूं।
विकल्प 1
जब आवेदन अपने यूआई दिखाने के लिए पुस्तकालय चाहता है, AppDelegate self.window में गुजरता है, और पुस्तकालय का अपना रूट दृश्य नियंत्रक सेट, प्रभावी रूप से यूआई के पूर्ण स्वामित्व लेने। जब यूआई समाप्त हो जाता है, तो यह ऐपडिलेगेट को सूचित करता है, जो तब यूआई के स्वामित्व को वापस लेते हुए विंडो पर अपना रूट व्यू कंट्रोलर सेट करता है।
विकल्प 2
पुस्तकालय के लिए एक दृश्य नियंत्रक, जो एप्लिकेशन पर जो कुछ भी देखने ढेर यह पसंद करती धक्का कर सकते हैं उजागर करता है। ऐप दृश्य नियंत्रक को हटाने के लिए भी ज़िम्मेदार है जब पुस्तकालय यह सूचित करता है कि यूआई समाप्त हो गया है।
मुद्दे
विकल्प 1 के साथ, वहाँ जड़ दृश्य नियंत्रकों को बदलने के लिए एक आवेदन चल रहा है के बीच में है, जबकि समस्याओं हो सकता है। विकल्प 2 के साथ, दृश्य नियंत्रक प्रदान करने में समस्याएं हो सकती हैं जो मनमाने ढंग से संदर्भ में काम कर सकती हैं (पूर्ण विंडो दृश्य नियंत्रक के रूप में, एक UINavigationController के उप-दृश्य के रूप में)।
दोनों विकल्पों के साथ एक और समस्या अन्य यूआईएप्लिकेशंस डिलीगेट अधिसूचनाएं हैं जो ऐपडिलेगेट प्राप्त कर सकती हैं, जैसे एप्लिकेशनविल्लरसिग्निएक्टिव: और एप्लिकेशनडिडबैक्टएक्टिव:। लाइब्रेरी को इसकी यूआई को सही तरीके से बनाए रखने के लिए नोटिफिकेशन को संभालने की आवश्यकता हो सकती है। क्या ऐप डिलीगेट लाइब्रेरी में इनमें से प्रत्येक को निष्क्रिय करेगा जब उसका यूआई सक्रिय हो?
क्या कोई बेहतर विकल्प 3 है जिसके बारे में मैंने सोचा नहीं है?
क्या हमें एनएसओब्जेक्ट क्लास –
में यह कोड लिखने की ज़रूरत है, आप इसे जितनी भी कक्षा में डाल देंगे, वह NSObject से निकली है और इसे ObjectiveC कोड होना चाहिए, इसलिए मुझे यकीन नहीं है कि मैं आपका प्रश्न समझता हूं। ध्यान दें कि यह> 2 साल पुराना है इसलिए सुनिश्चित नहीं है कि यह अभी भी वैध है या नहीं। – Dad
उत्तर के लिए टीएनएक्स आपका कोड अच्छा काम कर रहा है। यह मेरे कोड में एक गलती थी। भयानक कोड यह मेरे समय को बहुत बचाता है .. –