2011-05-19 12 views
12

क्या कोई मुझे बता सकता है जब हम iPhone प्रोग्रामिंग के दौरान AppDelegate.m और AppDelegate.h का उपयोग करते हैं? मैंने बुनियादी शिक्षा के लिए केवल ViewController.m और ViewController.h का उपयोग किया है। मैं सिर्फ यह जानना चाहता हूं कि ऐपडिलेगेट का कब और क्यों उपयोग किया जाता है। धन्यवाद। !!AppDelegate.m के बीच अंतर और नियंत्रक देखें।

उत्तर

20

दोनों कक्षाएं परिभाषित करते हैं, लेकिन कक्षाओं को विभिन्न चीजों के लिए उपयोग किया जाता है। ViewController.h/m एक व्यू कंट्रोलर क्लास को परिभाषित करता है जो दृश्यों का पदानुक्रम प्रबंधित करता है - मूल रूप से, किसी एप्लिकेशन की एक स्क्रीन। आपके पास कई स्क्रीन हो सकती हैं जिनमें प्रत्येक का अपना व्यू कंट्रोलर होता है।

AppDelegate.h/m एक कक्षा को परिभाषित करता है जो समग्र रूप से एप्लिकेशन का प्रबंधन करता है। ऐप उस वर्ग का एक उदाहरण बनाएगा और उस ऑब्जेक्ट संदेश भेजेगा जो प्रतिनिधि को एप के व्यवहार को अच्छी तरह से परिभाषित समय पर प्रभावित करने देता है। उदाहरण के लिए, -प्लिकेशंस: didFinishLaunchingWithOptions: ऐप लॉन्च होने पर भेजा जाता है और कुछ दिलचस्प करने के लिए तैयार होता है। संदेश की सूची के लिए UIApplicationDelegate reference page पर एक नज़र डालें जो ऐप प्रतिनिधि आवेदन के व्यवहार को संशोधित करने के लिए कार्यान्वित कर सकता है।

6

व्यू-नियंत्रक। एच/एम आपके मॉडल और आपके दृश्य के बीच कनेक्शन को नियंत्रित करने के लिए ज़िम्मेदार है (पर अधिक एमवीसीhere)।

AppDelegate। एच/एम आपके आवेदन के जीवन चक्र के लिए ज़िम्मेदार है। जब उपयोगकर्ता होम बटन दबाता है और आपके ऐप से बाहर निकलता है, तो ऐप पृष्ठभूमि में प्रवेश करते समय क्या करना है। इस तरह की चीजें।

+1

जीवन चक्र के बारे में बोलते हुए, वैश्विक चर को घोषित करने के लिए कि ऐप को विभिन्न 'व्यू कंट्रोलर' में उपयोग करने की आवश्यकता है, 'AppDelegate' फ़ाइल पर होना चाहिए। ऐप प्रतिनिधि के खतरे को इंगित करने के लिए – Luca

16

मैं निम्नलिखित @ Caleb के उत्तर में जोड़ना चाहता हूं।

यदि देखभाल नहीं की जाती है, तो ऐपडिलेगेट आसानी से एप्लिकेशन में सबसे अधिक एक्सेस ऑब्जेक्ट्स में से एक बन सकता है। मैं आमतौर पर ऐपडिलेगेट में मेरे किसी भी व्यू कंट्रोलर से कॉलिंग विधियों से बचना चाहता हूं। जब तक, ऐपडिलेगेट को कुछ रिपोर्ट करने की आवश्यकता नहीं होती है जो पूरे एप्लिकेशन के व्यवहार को प्रभावित करेगी।

  • प्रारंभ:

    मैं निम्नलिखित के लिए मेरे AppDelegate रखने जो बहुत पहले प्रक्षेपण पर किया जाना चाहिए संस्करण से

  • डेटा प्रवास संस्करण के लिए (उदाहरण के लिए अगर (एक स्थापित करने या एक अद्यतन के बाद) आप
  • अप्रतिबद्ध की बचत करने में लांच करने के लिए CoreData और माइग्रेशन)
  • MainWindow.xib
  • से IBOutlets के माध्यम से जुड़े वस्तुओं प्रारंभिक उन्मुखीकरण का निर्धारण करने का विन्यास का उपयोग एप्लिकेशन को समाप्त करने या पृष्ठभूमि मोड में प्रवेश करने से पहले डेटा/राज्य
  • ऐप्पल पुश अधिसूचना सेवा के लिए पंजीकरण करना और हमारे सर्वर
  • पर डिवाइस टोकन भेजना समर्थित अनुप्रयोग URL में से एक खोलना (उदा। मानचित्र: //)

अन्य उपयोग केस परिदृश्यों और ऐपडिलेगेट का एक और अधिक विवरण के लिए, iOS Application Programming Guide देखें।

+2

+1। कुछ लोग इसे सभी प्रकार की चीजों को करने के लिए उपयोग करते हैं, मुख्य रूप से क्योंकि यह एक सिंगलटन है और इसलिए वैश्विक स्तर पर पहुंचना आसान है। मुझे नहीं लगता कि यह एक अच्छा दृष्टिकोण है। – Caleb

संबंधित मुद्दे