सामान्य उत्तर "जैसे ही आपको सूचनाओं की आवश्यकता नहीं होगी" होगा। यह स्पष्ट रूप से संतोषजनक जवाब नहीं है।
मेरा सुझाव है, कि आप उन कक्षाओं की [notificationCenter removeObserver: self]
विधि में एक कॉल जोड़ते dealloc
हैं, जिसे आप पर्यवेक्षकों के रूप में उपयोग करने का इरादा रखते हैं, क्योंकि यह एक पर्यवेक्षक को सफाई से अपंजीकृत करने का अंतिम मौका है। हालाँकि, यह केवल सूचना केंद्रों द्वारा मृत वस्तुओं को सूचित करने के कारण होने वाली दुर्घटनाओं से आपकी रक्षा करेगा। यह आपके कोड को सूचनाएँ प्राप्त करने से नहीं बचा सकता है, जब आपकी वस्तुएँ अभी तक नहीं हैं / अब ऐसी स्थिति में नहीं हैं जिसमें वे ठीक से अधिसूचना को संभाल सकें। इसके लिए ... ऊपर देखें।
संपादित करें (चूंकि उत्तर मुझे लगता है कि अधिक टिप्पणियों को आकर्षित करने के लिए लगता है) सभी मैं यहां कहने की कोशिश कर रहा हूं: यह सामान्य रूप से सामान्य सलाह देने के लिए कठिन है जब अधिसूचना केंद्र से पर्यवेक्षक को निकालना सबसे अच्छा है, क्योंकि यह निर्भर करता है:
- आपके उपयोग के मामले में (कौन सी सूचनाएं देखी जाती हैं? उन्हें कब भेजा जाता है?)
- पर्यवेक्षक का कार्यान्वयन (यह कब सूचनाएं प्राप्त करने के लिए तैयार है? कब यह अब तैयार नहीं है?)
- पर्यवेक्षक का इरादा जीवन-समय (क्या यह किसी अन्य वस्तु से बंधा है, कहते हैं, एक दृश्य या दृश्य नियंत्रक?)
- ...
तो, सबसे अच्छी सामान्य सलाह मैं आपके साथ आ सकता हूं: अपने ऐप को सुरक्षित रखने के लिए। कम से कम एक संभावित विफलता के खिलाफ, removeObserver:
नृत्य करें dealloc
, क्योंकि यह अंतिम बिंदु (वस्तु के जीवन में) है, जहां आप उस सफाई से कर सकते हैं। इसका मतलब यह नहीं है: "जब तक dealloc
कहा जाता है तब तक निष्कासन को स्थगित करें , और सबकुछ ठीक हो जाएगा"। इसके बजाय, पर्यवेक्षक को हटा दें क्योंकि सूचनाएं प्राप्त करने के लिए ऑब्जेक्ट अब तैयार नहीं है (या आवश्यक है) । वह सटीक सही क्षण है। दुर्भाग्य से, ऊपर उल्लेख किए गए किसी भी प्रश्न के उत्तर को नहीं जानते हुए, मैं यह अनुमान भी नहीं लगा सकता कि वह क्षण कब होगा।
आप हमेशा removeObserver:
एक वस्तु को कई बार सुरक्षित कर सकते हैं (और सभी लेकिन किसी दिए गए पर्यवेक्षक के साथ पहली बार कॉल करने से कुछ नहीं होगा)। इसलिए: इसे dealloc
केवल सुनिश्चित करने के लिए (फिर से) करने के बारे में सोचें , लेकिन सबसे पहले और सबसे महत्वपूर्ण: इसे उचित समय पर करें (जो आपके उपयोग के मामले से निर्धारित होता है)।