2013-02-02 15 views
6

त्वरित सवाल NSNotificationCenter के पर्यवेक्षक हटाना:सिंगलटन उद्देश्य सी में

मैं एक सिंगलटन वर्ग है जो कई NSNotifications के लिए एक पंजीकृत है। चूंकि सिंगलेट्स ऐप के जीवनकाल में आखिरी बार हैं।

मैं

[NSNotificationCenter defaultCenter] removeObserver:self] 

मेरी सिंगलटन कक्षा में लागू करने के लिए है?

आईओएस में सिंगलेट्स में एनएसएनोटिफिकेशन सेंटर से निपटने का सही तरीका क्या है?

धन्यवाद

+0

संभावित डुप्लिकेट [यदि ऐपडिलेगेट में अधिसूचना के लिए पर्यवेक्षक जोड़ें, तो क्या मुझे इसे हटाने को परेशान करने की आवश्यकता है?] (Http://stackoverflow.com/questions/9560419/if-add-an-observer-for- ए-अधिसूचना-इन-द-एपडिलेगेट-डू-आई-ज़रूरत-टू-बोदर-रे) –

उत्तर

9

नहीं, आप इस मामले में अवलोकन को रोकने के लिए की जरूरत नहीं है। एकमात्र ऐसा समय जब एक वास्तविक सिंगलटन द्वारा उपयोग की जाने वाली स्मृति को तब तक हटा दिया जाएगा जब प्रोग्राम निकलता है। जब प्रोग्राम निकलता है, तो यह आगे बढ़ता है और सभी स्मृति और संसाधनों का उपयोग करता है जो किसी भी तरह से उपयोग किए जा रहे हैं।

+0

स्पष्टीकरण – banditKing

+0

खुशी के लिए धन्यवाद, मैं मदद कर सकता हूं! – lnafziger

0

यदि आप चाहते हैं कि आपका सिंगलटन आपके ऐप में अधिसूचना सुनता है तो उसे हटाने की कोई आवश्यकता नहीं है।

आपको लगता है कि निश्चित बिंदु पर अपने सिंगलटन सूचनाएं प्राप्त करना बंद करना चाहिए तो आप एक विधि अपने सिंगलटन में जोड़ सकते हैं और जहां बस Memory खातिर के लिए आवश्यक

- (void)removeObserver { 
    [[NSNotificationCenter defaultCenter] removeObserver:self] ; 
} 
2

यह कॉल कर सकते हैं चाहते हैं, आप ठीक ढंग से उस में निकाल देना चाहिए -dealloc

+0

जैसा कि मैंने अपने जवाब में बताया है, एक सिंगलटन में जब प्रोग्राम प्रोग्राम से बाहर निकलता है तो स्मृति हटा दी जाएगी .... जब तक प्रोग्राम चल रहा है तब तक सिंगलटन का पूरा बिंदु स्मृति में रहना है। – lnafziger

+0

यह डेवलपर की स्मृति की सेवा करेगा यदि गैर-सिंगलटन उपयोग के लिए कुछ समय कक्षा बदल दी जाएगी – rsc

संबंधित मुद्दे