का उपयोग कब करें मैं एक ऑब्जेक्ट (1-से-एन रिलेशनशिप) की कई घटनाओं पर एकाधिक पर्यवेक्षक रखना चाहता हूं।NSNotificationCenter
इस कार्य को प्राप्त करने के लिए एक तंत्र NSNotificationCenter
द्वारा प्रदान किया गया है। मेरी समस्या के लिए उपयोग किए जाने पर तंत्र काफी अधिक दिखता है।
कैसे मैं इसे मैन्युअल NSNotificationCenter
के उपयोग के बिना करना होगा:
- (void)addDelegate:(id<DelegateProtocol>)delegate;
- (void)removeDelegate:(id<DelegateProtocol>)delegate;
मेरी वस्तु से जोड़ सकते हैं और पर्यवेक्षकों हटाने के लिए।
- (void)someEventFired:(NSObject<NSCopying> *)eventData
{
for (id delegate in delegates) {
NSObject *data = [eventData copy];
[delegate someEventFired:data];
}
}
इस तंत्र सीधी-सपाट और अतिरिक्त तार को साझा किए वस्तुओं के बिना लागू करने के लिए सरल है।
- क्या
NSNotificationCenter
के अलावा आईओएस ढांचे में 1-से-एन प्रतिनिधियों (जैसे सी # घटनाओं) के लिए कोई आधिकारिक पैटर्न है? NSNotificationCenter
कब उपयोग किया जाना चाहिए और कब नहीं?- जब मैं यहां सुझाव दे रहा हूं कि एक कार्यान्वयन कब किया जाए और कब नहीं किया जाए?
मैं शायद ही कभी, या कभी, NSNotificationCenter का उपयोग करता हूं लेकिन आपके द्वारा वर्णित उसी विधि के साथ चला जाता है। मैंने कई वर्षों तक कई आईओएस ऐप्स (मैं 50 से ऊपर ऐप्स कहूंगा) में इसका इस्तेमाल किया है, मैंने अब तक कोई समस्या नहीं देखी है। एक संभावित गॉचा यह हो सकता है कि आपको कभी-कभी पर्यवेक्षकों को हटाने के लिए निश्चित होना आवश्यक हो, या उम्मीद के बाद उन्हें रिहा नहीं किया जा सकता क्योंकि उन्हें प्रतिनिधियों के रखवाले द्वारा बनाए रखा जाता है। – Jonny
मुझे लगता है कि भले ही NSNotificationCenter दृष्टिकोण नहीं है जिसे हम सी # से जानते हैं, हमें अभी भी उस विशिष्ट प्लेटफ़ॉर्म के लिए डिज़ाइन पैटर्न का उपयोग करने पर ध्यान देना चाहिए, जिसके लिए हम काम कर रहे हैं। उस ने कहा, मैं अब कई ऐप्स में NSNotificationCenter के साथ गया था (हालांकि आप जितने भी नहीं), और मुझे नहीं लगता कि कोड इसके माध्यम से और भी खराब हो गया है। – Etan