मैं अक्सर खुद को "उपयोगिता" कक्षाएं लिखता हूं जिसे मेरी परियोजनाओं में फिर से उपयोग किया जा सकता है।उद्देश्य सी: ब्लॉक बनाम चयनकर्ता बनाम प्रोटोकॉल
उदाहरण के लिए, मान लें कि मेरे पास "पता पुस्तिका" दृश्य है। मैं अपनी पता पुस्तिका का उपयोग यह चुनने के लिए कर सकता हूं कि कौन ईमेल भेजता है, या शायद मीटिंग अनुरोध में कौन जोड़ा जाता है।
मैं इस दृश्य नियंत्रक को विकसित करूंगा ताकि इसका उपयोग ईमेल नियंत्रक और मीटिंग नियंत्रक दोनों द्वारा किया जा सके, कॉलर तंत्र को किसी भी प्रकार के कॉलर तंत्र को उपयोगकर्ता को पता पुस्तिका को किसी को चुनने के लिए या तो समाप्त करने के लिए, या उन्होंने रद्द कर दिया।
ऐसा लगता है कि इस परिदृश्य में मूल रूप से चार (उचित) दृष्टिकोण हो सकते हैं;
पता पुस्तिका नियंत्रक पर एक "एड्रेसबुक डिलीगेट" प्रोटोकॉल और संबंधित प्रतिनिधि संपत्ति बनाएं। फिर परिणाम संवाद करने के लिए प्रोटोकॉल में परिभाषित संदेशों का उपयोग करें (UIActionSheetDelegate के समान)।
एक "अनौपचारिक" "एड्रेसबुक डिलीगेट" प्रोटोकॉल और एड्रेसबुक नियंत्रक पर एक संबंधित प्रतिनिधि संपत्ति बनाएं, लेकिन प्रतिनिधि संपत्ति का प्रकार "आईडी" होगा, और यह देखने के लिए रनटाइम पर "जवाब देने के लिए चयनकर्ता:" देखेंगे या नहीं प्रतिनिधि हमें आवश्यक विधियों को लागू करता है (ऐसा लगता है कि अधिकांश ढांचे की सामग्री इस तरह से शुरू हो गई है)।
पता पुस्तिका नियंत्रक को एक आईडी का प्रतिनिधित्व करता है जो एक प्रतिनिधि का प्रतिनिधित्व करता है, साथ ही दो एसईएल जो उपयोगकर्ता को उपयोगकर्ता चुनने या अनुरोध रद्द करने के तरीकों को निर्दिष्ट करते हैं। इसके साथ मैं जो लाभ देखता हूं वह है; मान लीजिए कि एक नियंत्रक दोनों भेजने वाले ईमेल का समर्थन करता है और मीटिंग्स सेट अप करता है (मुझे इस उदाहरण में पता है कि खराब डिजाइन की तरह लगता है ... लेकिन कोई और अधिक सामान्य स्थिति की कल्पना कर सकता है जहां यह उपयोगिता वर्ग के लिए बिल्कुल उचित लगेगा) - इस मामले में आप एड्रेसबुक कंट्रोलर अलग-अलग एसईएल पास करें कि आप उपयोगकर्ताओं को किसी ईमेल में जोड़ रहे हैं या उपयोगकर्ताओं को मीटिंग में जोड़ रहे हैं ... नियंत्रक के "राज्य" को इंगित करने के लिए iVar पर एक बड़ा सुधार।
पताबुक नियंत्रक दो ब्लॉक पास करें; जब कोई उपयोगकर्ता एड्रेस बुक से किसी को चुनता है, और एक उपयोगकर्ता को अनुरोध रद्द करने पर चलाने के लिए चलाया जाता है।
ब्लॉक इतना काफी उपयोगी मेरे लिए किया गया है, और भी बहुत कुछ सुंदर, मैं अपने आप को लगभग जब उन्हें नहीं का उपयोग करने से अधिक उलझन में लग रहा हूँ।
मैं इस विषय पर उनके विचारों के साथ मदद करने के बजाय स्टैक ओवरफ्लो समुदाय के अधिक अनुभवी सदस्यों की उम्मीद कर रहा हूं।
मुझे आशा है कि लोग किसी भी मौजूदा उत्तर के लिए वोट दें, जिनसे वे सहमत हैं। मैं कुछ दिनों में जो भी वोट देता हूं उसका जवाब दूंगा। – Steve