एप्पल प्रलेखन अस्पष्ट है, और यह सिर्फ इतना है कि आम तौर पर एक प्रोग्रामर एक नया बनाने के लिए की जरूरत नहीं होगी राज्यों:
प्रत्येक चल कोको कार्यक्रम एक डिफ़ॉल्ट अधिसूचना केंद्र है। आप आमतौर पर अपना खुद का निर्माण नहीं करते हैं। एक NSNotificationCenter ऑब्जेक्ट केवल एक प्रोग्राम के भीतर अधिसूचनाएं प्रदान कर सकता है।
पूर्ण स्रोत: NSNotificationCenter documentation।
हालांकि प्रत्येक अधिसूचना केंद्र अधिसूचनाओं के नेटवर्क को संभाल सकता है, जो नाम और वस्तु से अलग है। आप एक पर्यवेक्षक को जोड़ने जब आप आम तौर पर इस तरह किसी तरह से विधि कॉल:
[center addObserver: self selector: @selector(observe:) name: @"observe" object: someObject];
और जब आप एक सूचना पोस्ट आप वस्तु निर्दिष्ट कर सकते हैं:
[center postNotificationName: @"observe" object: someObject];
इस तरह कहते हैं कि तुम एन नाम का उपयोग और एम ऑब्जेक्ट्स, आप एन * एम विशिष्ट अधिसूचनाओं को संभाल सकते हैं। मुझे लगता है कि दो अधिसूचना केंद्रों का उपयोग करने की आवश्यकता नहीं है। सैद्धांतिक रूप से यदि आपने सभी नामों को पूरा कर लिया है तो आप alloc + init का उपयोग करके एक और बना सकते हैं, लेकिन मुझे शायद ही यह दिखाई दे कि यह वास्तव में आसान कैसे हो सकता है।
यह भी मान लें कि अधिसूचना केंद्र अक्सर उपयोग किया जाता है जब दो ऑब्जेक्ट्स होते हैं जिनके पास एक दूसरे के लिए प्रत्यक्ष सूचक नहीं होता है (अन्यथा क्यों इसे केवल एक विधि नहीं बुलाया जाता है?), जटिल बाइंडिंग से बचने के कारण (विशेष रूप से जब आप उपयोग करते हैं बहुत सारी एक्सआईबी फाइलें), इसलिए एक अनन्य अधिसूचना केंद्र वस्तु बहुत आसान है।
इसके बजाय यदि आपने नोटिफिकेशन केंद्र आवंटित + init साथ मिल का उपयोग करें, तो आप यह सुनिश्चित करना चाहिए कि सभी संवाद स्थापित करने की वस्तुओं कि अधिसूचना केंद्र के लिए एक सूचक है, और यह कुछ जटिलता जोड़ना होगा। सभी अधिसूचना केंद्र की शक्ति बर्बाद हो जाएगी।
स्रोत
2013-06-11 15:53:32
कानूनी प्रश्न, मैंने हमेशा इसे ध्यान में रखे * डिफ़ॉल्ट केंद्र * का उपयोग किया है। –