2010-02-15 14 views
5

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

- (void)setupViewController { 
    MyViewController *myVC = [[MyViewController alloc] init]; 

    UITabBarItem *tbi = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemDownloads tag:1]; 
    myVC.tabBarItem = tbi; // LEAK: 128 bytes 

    self.myViewController = myVC; 

    [myVC release]; 
    [tbi release]; 
} 

मेरा मतलब है ... TBI और myVC अंत में जारी है, और alloc संतुलित है। तो क्या गलत हुआ? मुझे यह नहीं मिला।

उत्तर

3

यदि MyVc.tabBarItem पहले से सेट हो चुका है, जो कुछ भी हो रहा है, उसे ठीक से हटाया नहीं जा सकता है, जिससे रिसाव हो सकता है।

+0

myVC की टैबबार संपत्ति को बनाए रखने के लिए परिभाषित एक संपत्ति होनी चाहिए। यदि आप ऐसा करते हैं, तो संपत्ति को सौंपा गया वस्तुओं का प्रतिधारण स्वचालित रूप से बनाए रखा जाएगा। – TechZen

+0

अच्छी तरह से, लेकिन TabBarItem ऐप्पल से है, मुझसे नहीं ;-) मैंने अपने व्यू कंट्रोलर के लिए कोई टैब नहीं बनाया है। ऐप्पल ने किया यह स्मृति प्रबंधन नियमों के खिलाफ होगा यदि मैं मैन्युअल रूप से myVC.tabBarItem को छोड़ देता हूं क्योंकि ऐप्पल ऐसा करने के लिए भूल गया है, है ना? – dontWatchMyProfile

+0

'tabBarItem'' retain' semantics वाला एक प्रॉपर्टी है। यह बहुत संभावना नहीं है कि सेटर में एक रिसाव है। –

2

यह सिर्फ दिखाने के लिए कि निम्नलिखित बयानों में से कम से कम एक सच है चला जाता है:

  1. उपकरण सही नहीं है और कभी कभी लीक जहां कोई (और इसके विपरीत) नहीं कर रहे हैं पता चलता है।
  2. ऐप्पल का कोड बग-फ्री नहीं है।

वास्तव में, दोनों सत्य हैं।

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