2012-10-08 23 views
5

के साथ मेमोरी जारी नहीं कर रहा है मैं उन आवंटन को खोजने के लिए उपकरणों का उपयोग कर रहा हूं जो ठीक से जारी नहीं किए जा रहे हैं। मेरे पास MKMapViewDelegate है जो इंस्टॉलेशन के बाद एक इंस्टेंस विधि के माध्यम से एक नक्शा जोड़ता है। मैं कॉल पेड़ में देख सकता हूं कि ViewDelegate जारी होने के बाद, यह विधि 300KB स्मृति को बनाए रखती है। मैं कोड का मांस बाहर टिप्पणी की है और यह सिर्फ इस लाइन के साथ स्मृति का कहना है पोस्टरों:एमकेमैप व्यू initWithFrame एआरसी

self.map = [[MKMapView alloc] initWithFrame:CGRectMake(10, 210, 300, 125)]; 

मैं वस्तु सूची और MKMapView ही रहने वाले नहीं है में देखो, लेकिन जैसा कि मैंने नई ViewDelegates बनाना, जिनका रख स्मृति जोड़ता रहता है।

@property (strong, nonatomic)  MKMapView *map; 

मानचित्र के प्रतिनिधि नहीं के बराबर करने के लिए सेट कर दिया जाता है, साथ ही ViewDelegate के dealloc

self.map.delegate = nil; 
self.map = nil; 
+0

शून्य के बजाए रिलीज का उपयोग करने के बारे में कैसे। क्या आप इसे अपने अंत में देख सकते हैं? –

+2

@ एसपी। वे एआरसी का उपयोग कर रहे हैं, कोई रिलीज नहीं है। –

+0

@ एसपी। कोई और उस संपत्ति को संदर्भित नहीं करता है, है ना? संदर्भ में संभावित रूप से कुछ और नहीं है? –

उत्तर

1

पर संदर्भ के रूप में एक बार जब आप नहीं के बराबर करने के लिए प्रतिनिधि निर्धारित करते हैं, वहाँ अब कर रहे हैं: यहाँ कैसे नक्शा परिभाषित किया जाता है किसी भी पॉइंटर्स, और आईओएस इसे छोड़ने पर इसे रिलीज़ करेगा। आईओएस इसे शून्य पर सेट करने के तुरंत बाद मेमोरी जारी नहीं कर सकता है।

याद रखें, कि आप इसे पॉइंटर को शून्य पर सेट करके हटा रहे हैं, लेकिन ऑब्जेक्ट अभी भी ढेर पर बना हुआ है, मूल रूप से कुछ भी नहीं कर रहा है, जब तक कि कुछ और आवंटित नहीं हो जाता।

(मुझे लगता है कि आपने [self.map removeFromSuperView] का उपयोग करके अपने पर्यवेक्षण से MKMapView को भी हटा दिया है)।

+0

क्या उपकरण यह नहीं पहचानते कि वास्तव में स्मृति क्या है और इसका उपयोग किया जा रहा है? मैं समझता हूं कि मेमोरी ऑब्जेक्ट्स में ओवरराइट होने तक मौजूद है लेकिन उपकरणों का मुद्दा यह नहीं है कि यह दिखाता है कि अभी भी एप्लिकेशन द्वारा संदर्भित किया गया है और इसलिए स्मृति को फिर से नहीं बदला जा सकता है? मेरे पास ऐसा कोड है जिसने FromSuperView को हटा दिया है, लेकिन इसके साथ-साथ इसे सबव्यूव के रूप में जोड़ा जा रहा है। – spedly