मैं विचारों के बीच स्थानांतरित करने के लिए UINavigationController का उपयोग कर रहा हूं। जब मैं विचारों में आगे और आगे बढ़ता हूं, तो मेरे ऐप द्वारा उपयोग की जाने वाली मेमोरी बढ़ती जा रही है। सभी व्यू कंट्रोलर के डेलोक विधि में एनएसएलओजी स्टेटमेंट्स रखने पर, मैंने देखा कि इसे केवल कुछ व्यू कंट्रोलर के लिए बुलाया जा रहा था और जो भी पॉप किए गए थे।आईफोन - एक व्यू कंट्रोलर के लिए डेलोक कब होता है?
उदाहरण के लिए, इस क्रम में जो विचारों पुश किए जाते हैं MainViewController -> viewcontroller1 -> viewcontroller2 -> viewcontroller3
अब viewcontroller3 अगर मैं एक popToViewController कर में: mainController, dealloc केवल viewcontroller3 के लिए कहा जाता है। इसे viewcontroller1 और 2.
क्या कोई मुझे बता सकता है कि यह क्यों हो रहा है।
समस्या मिली। व्यू कंट्रोलर द्वारा आयोजित संदर्भों में से कोई भी स्मृति में अभी भी डेलोक विधि को नहीं बुलाया जा रहा था। मेरे मामले में यह MPMoviePlayerController ऑब्जेक्ट था जिसे viewcontroller1 और viewcontroller2 में जारी नहीं किया गया था।
मुझे बिल्कुल एक ही समस्या का सामना करना पड़ा; dealloc केवल तीसरे नियंत्रक के लिए बुलाया जाता है। आपने कहा "यदि व्यू कंट्रोलर द्वारा आयोजित किसी भी संदर्भ में स्मृति में अभी भी कोई डेलोक विधि नहीं कहा जा रहा था।" क्या आप इसे विस्तार से बताएंगे? –
व्यू कंट्रोलर अभी भी इस्तेमाल होने वाली किसी ऑब्जेक्ट का प्रतिनिधि था। मैंने इसे प्रतिनिधि होने से हटा दिया और फिर यह ठीक काम किया। अन्य ऑब्जेक्ट को इसके संदर्भ (प्रतिनिधि के रूप में) – lostInTransit