"NSNotification वस्तु (इसी तरह से NSMutableDictionary या सरणी के लिए) ... अर्थ मैं अधिसूचना पोस्टिंग के बाद वस्तु जारी कर सकते हैं बनाए रखने करता है?"
मुझे यकीन नहीं है कि object
और userInfo
पैरामीटर उस विधि द्वारा बनाए गए हैं या नहीं, लेकिन व्यावहारिक रूप से, यह वास्तव में कोई फर्क नहीं पड़ता।
मुझे लगता है कि आप कल्पना कर सकते हैं कि NSNotificationCenter
इन सूचनाओं को बना रहा है और उन्हें एक असीमित तरीके से प्रसारित कर रहा है, लेकिन ऐसा नहीं है। के रूप में (NSNotificationCenter Class Reference देखें) NSNotificationCenter
के लिए दस्तावेज में कहा गया है, सूचनाएं तुल्यकालिक पोस्ट कर रहे हैं:
एक सूचना केन्द्र पर्यवेक्षकों तुल्यकालिक को सूचनाएं देता है। दूसरे शब्दों में, postNotification:
विधियां वापस नहीं आती हैं जब तक सभी पर्यवेक्षकों के पास अधिसूचना प्राप्त और संसाधित नहीं होती है। अधिसूचनाएं भेजने के लिए असीमित रूप से NSNotificationQueue
का उपयोग करें। एक बहु आवेदन में, सूचनाएं हमेशा में धागा, जिसमें अधिसूचना पोस्ट किया गया था, जो एक ही धागा, जिसमें एक पर्यवेक्षक पंजीकृत ही नहीं हो सकता है दिया जाता है।
तो, आपके कोड में, अधिसूचना केंद्र अधिसूचना बनाता है और फिर इसे डिफ़ॉल्ट केंद्र के माध्यम से प्रसारित करता है।अधिसूचना नाम और वस्तु के इस संयोजन के लिए पंजीकृत कोई भी वस्तु अधिसूचना प्राप्त करेगी और फिर उस अधिसूचना के लिए पंजीकृत होने पर निर्दिष्ट चयनकर्ता को निष्पादित करेगी। इसके बाद, नियंत्रण उस वर्ग पर लौटता है जिसने अधिसूचना पोस्ट की है।
दूसरे शब्दों में, जब तक आपका कोड [teamDictCopy release]
लाइन पर जाता है, teamDictCopy
सभी इच्छुक पार्टियों द्वारा पहले ही "उपयोग" किया जा चुका है। इसलिए, इसे जारी करने में कोई खतरा नहीं होना चाहिए।
सम्मेलनों पर बस एक नोट। आम तौर पर, object:
पैरामीटर उस ऑब्जेक्ट के लिए होता है जो अधिसूचना पोस्ट कर रहा है, और userInfo:
पैरामीटर अतिरिक्त जानकारी के NSDictionary
के लिए है। इसलिए, सामान्य रूप से, आप अधिसूचना को निम्न प्रकार से संभाल लेंगे:
NSMutableDictionary *teamDictCopy = [self.teamDict mutableCopy];
[teamDictCopy setObject:
[NSNumber numberWithInt:self.scrollViewIndex] forKey:@"imageIndex"];
if([self.statusButton.title isEqualToString:@"Completed"]){
[[NSNotificationCenter defaultCenter] postNotificationName:@"UnComplete"
object:self userInfo:teamDictCopy];
}
[teamDictCopy release];
धन्यवाद ... आपका उत्तर मेरे प्रश्न से अधिक स्पष्ट हो गया। _always learning_ – MDMonty
यह सच होगा यदि NSNotifications का उपयोग केवल NSNotificationCenters के साथ किया जाता था। NSNotificationQueue के बारे में क्या? उस स्थिति में हम असीमित रूप से पोस्ट कर रहे हैं और इससे कोई फर्क नहीं पड़ता कि वस्तु बरकरार है या नहीं। – DougW