Objective-C/Cocoa: Proper design for delegates and controllers -


निम्न सामान्य स्थिति पर विचार करें:

आपके पास कुछ मुख्य दृश्य है कोको एप्लिकेशन, जो एनआईबी से भरा हुआ है, जो कि मुख्य दृश्य नियंत्रक द्वारा नियंत्रित होता है। आपका मुख्य दृश्य में कुछ नियंत्रण होते हैं, जैसे कि UILabel infoLabel । आपके पास एक प्रतिनिधि MyDelegate वर्ग है जो किसी प्रकार की घटना को प्राप्त करता है।

आप यह सुनिश्चित करना चाहते हैं कि जब MyDelegate इसकी इवेंट प्राप्त करे, तो < कोड> जानकारी लेबल को उचित रूप से अपडेट किया गया है। हालांकि, समस्या यह है कि MyDelegate का मुख्य दृश्य या MainViewController के संदर्भ नहीं है और लेबल के बारे में नहीं जानता है।

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

< P> इस समस्या को हल करने के लिए उचित डिजाइन क्या है?

एक अनाम डेवलपर फोरम में, कोई व्यक्ति लिखता है:

तो, एक लंबी कहानी कम करने के लिए, मैंने तय किया है कि मैं NSNotifications का उपयोग करना शुरू कर दूँगा। स्टैनफोर्ड कोर्स ऑनलाइन है, जो लोग अनुसरण कर रहे हैं, दो एप्पल इंजीनियरों द्वारा सिखाया जाता है वे अभी स्पष्ट रूप से ऐप प्रतिनिधि या वैश्विक चर का उपयोग नहीं करने के लिए कहा है, और एनएसनोटिफिकेशन, प्रतिनिधियों, और केवी अवलोकन का उपयोग करने के लिए कहा है।

अगर एप्पल इंजीनियरों का यही कहना है, तो मैं स्थानांतरित होने जा रहा हूं उस दिशा में।

NSNotifications बहुत सरल है कि वे वास्तव में इनकैप्शन के साथ हस्तक्षेप नहीं करते हैं श्रोता केवल अधिसूचना और एक वस्तु के लिए सुनता है - मुझे नहीं लगता कि उसे पता होना चाहिए कि उसे किसने भेजा है।

तो आपके उदाहरण में मैं प्रतिनिधि को एक अधिसूचना पोस्ट करने पर विचार करूंगा कि लेबल बदल गया है, या बेहतर अभी तक नियंत्रक है कि अगर संपत्ति संभव है कि निरीक्षण करते हैं।


Comments

Popular posts from this blog

python - Overriding the save method in Django ModelForm -

html - CSS autoheight, but fit content to height of div -

qt - How to prevent QAudioInput from automatically boosting the master volume to 100%? -