मैं सामान्य रूप से "आपके आवेदन का दिल" शब्द के एंड्रयू के उपयोग से निहित डिजाइन दृष्टिकोण से बचता हूं। मेरे कहने का मतलब यह है कि मुझे लगता है कि आपको केंद्रीय स्थान पर बहुत सी चीजों को टालने से बचना चाहिए - अच्छे प्रोग्राम डिजाइन में सामान्य रूप से "चिंता का क्षेत्र" द्वारा कार्यक्षमता को अलग करना शामिल है।
एक प्रतिनिधि वस्तु एक ऐसी वस्तु है जो उस वस्तु से अधिसूचित हो जाती है जब वह जिस वस्तु से जुड़ी होती है वह कुछ घटनाओं या राज्यों तक पहुँच जाती है। इस मामले में, एप्लिकेशन प्रतिनिधि एक ऐसी वस्तु है जो कुछ राज्यों तक UIApplication ऑब्जेक्ट पहुंचने पर सूचनाएं प्राप्त करता है। कई मामलों में, यह एक विशेष एक से एक ऑब्जर्वर पैटर्न है।
इसका मतलब यह है कि AppDelegate के लिए "चिंता का क्षेत्र" विशेष UIApplication राज्यों को संभाल रहा है। इनमें से सबसे महत्वपूर्ण हैं:
- applicationDidFinishLaunching: - ऑन-स्टार्टअप कॉन्फ़िगरेशन और निर्माण से निपटने के लिए अच्छा है
- applicationWillTerminate: - अंत में सफाई के लिए अच्छा है
आप AppDelegate में अन्य कार्यक्षमता डालने से बचना चाहिए क्योंकि वे वास्तव में वहाँ नहीं हैं। ऐसी अन्य कार्यक्षमता में शामिल हैं:
- दस्तावेज़ डेटा - आपके पास एक दस्तावेज़ प्रबंधक सिंगलटन होना चाहिए (कई दस्तावेज़ अनुप्रयोगों के लिए) या एक दस्तावेज़ सिंगलटन (एकल दस्तावेज़ अनुप्रयोगों के लिए)
- बटन / तालिका / दृश्य नियंत्रक, प्रतिनिधि विधियों या अन्य दृश्य हैंडलिंग (ApplicationDidFinishLaunching :) में शीर्ष-स्तरीय दृश्य को छोड़कर) - यह कार्य संबंधित दृश्य नियंत्रक कक्षाओं में होना चाहिए।
बहुत से लोग इन चीजों को अपने ऐपडेलगेट में ढकेल देते हैं क्योंकि वे आलसी हैं या उन्हें लगता है कि ऐपडेलगेट पूरे कार्यक्रम को नियंत्रित करता है। आपको अपने AppDelegate में केंद्रीयकरण करने से बचना चाहिए क्योंकि यह ऐप में चिंता के क्षेत्रों को पिघला देता है और स्केल नहीं करता है।