2012-05-14 8 views
6

मुझे समझ में नहीं आता है कि मुझे viewDidUnload बनाम viewDidDisappear में कुछ लागू करना चाहिए। दोनों के बीच क्या अंतर है?viewDidUnload बनाम viewDidDisappear

उदाहरण के लिए, जब दृश्य नियंत्रक दृश्य पदानुक्रम से हटा दिया जाता है तो मैं NSNotificaton भेजना चाहता हूं। इन दो तरीकों के बीच, क्या इससे कोई फर्क पड़ता है कि मैं उस अधिसूचना को कहां से पोस्ट करता हूं?

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html

+0

यह क्यों मतदान किया गया था? क्या सवाल बहुत अस्पष्ट था? – kevlar

+0

दस्तावेज उन दो तरीकों के बीच अंतर को समझाने के लिए पर्याप्त नहीं है? –

उत्तर

5

इस सेब के दस्तावेज़ के संदर्भ में है: -

viewDidUnload: -

जब एक कम स्मृति स्थिति उत्पन्न होती है और वर्तमान दृश्य नियंत्रक के विचारों की जरूरत नहीं कर रहे हैं, सिस्टम से उन दृश्यों को हटाने के लिए विकल्प चुन सकते हैं याद। दृश्य नियंत्रक के दृश्य को जारी करने के बाद इस विधि को बुलाया जाता है और यह कोई अंतिम सफाई करने का अवसर है। यदि आपका व्यू कंट्रोलर दृश्य या इसके सबव्यूस के अलग-अलग संदर्भ संग्रहीत करता है, तो आपको उन संदर्भों को रिलीज़ करने के लिए इस विधि का उपयोग करना चाहिए। आप इस विधि का उपयोग किसी भी ऑब्जेक्ट के संदर्भों को हटाने के लिए भी कर सकते हैं जिसे आपने दृश्य का समर्थन करने के लिए बनाया था, लेकिन अब यह आवश्यक नहीं है कि दृश्य समाप्त हो गया हो।

viewDidDisappear: -

दृश्य नियंत्रक कि अपनी दृष्टिकोण यह है कि हर दृश्य गायब हो जाता है या अन्य दृश्य में ले जाने के लिए एक दृश्य पदानुक्रम से हटा दिया गया था सूचित करता है।

0

viewDidDisappear हर बार दृश्य है जब कहा जाता है गायब हो जाता है या आप अन्य दृश्य पर जाकर जब नियंत्रक के दृश्य स्मृति से जारी है viewDidUnload कहा जाता है। (आईओएस 6.0 में बहिष्कृत। दृश्य अब कम स्मृति स्थितियों के तहत शुद्ध नहीं हैं और इसलिए इस विधि को कभी नहीं कहा जाता है।) see the reference

+0

धन्यवाद, अब मुझे एहसास है कि viewDidUnload को तब कॉल किया जाता है जब व्यू कंट्रोलर स्वयं अंततः नष्ट हो जाता है, लेकिन जब आप एक अलग दृश्य में संक्रमण करते हैं, तो शायद दृश्य पदानुक्रम को आगे बढ़ाएं। तो उदाहरण के लिए, यदि हमारे पास नियंत्रक ए -> बी -> सी है, और मैं जानना चाहता हूं कि बी कब नष्ट हो जाता है और ए को वापस लौटाता है, तो मुझे viewDidUnload का उपयोग करना चाहिए। यह बी/सी है जब भी बी सी जाता है, देखेंडिडिस भी आग लगती है। – kevlar

+4

यह गलत है। 'viewDidUnload' ** ** केवल ** कहा जाता है जब कम स्मृति स्थिति के कारण दृश्य जारी किया जाता है। अगर इसे अन्य कारणों से जारी किया गया है, तो आपको कोई 'viewDidUnload' ईवेंट नहीं मिलेगा। –

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