2009-12-27 88 views
0

我在我的最新應用程序的內存泄漏清理模式,並遇到了我無法解決的問題。NSMutableArray和屬性泄漏內存

以下方法已被清理,除了1個嘮叨問題。儀器告訴我,我的NSMutableArray名爲itemsToKeep泄漏內存,在我創建對象的時候。任何想法,爲什麼我泄漏內存將不勝感激。

下面是關於retainCounts一些註釋: 進入方法:self.myList具有retainCount = 1 退出方法:self.myList具有retainCount = 2和itemsToKeep具有retainCount = 2 我可以很容易地做一[itemsToKeep發佈]在最終使兩個計數降到1,但應用程序崩潰後一段時間(我想我知道爲什麼)。

有誰知道我可以擺脫itemsToKeep內存泄漏?

謝謝。

-(void)parsedScores:(BOOL)shouldAdd { 

//trim space, tab, newline from both ends 
NSString *tmp = self.lblCurrentName.text; 
NSString *list = [self trimString:tmp]; 

NSString *separators = @","; 

[self.myList removeAllObjects]; // doesn't impact retain counts 

self.myList = (NSMutableArray *)[list componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:separators]]; //this bumps up the self.myList retain count to 2 

NSMutableArray *itemsToKeep = [NSMutableArray arrayWithCapacity:30];  

for (NSString *item in self.myList) { 
    NSString *tmpItem = [self trimString:item]; 
    if (! [self shouldRemoveItem:tmpItem]) { 
     [itemsToKeep addObject:tmpItem]; 
    } 
} 

self.myList = itemsToKeep; //makes both variables' retain counts = 2 

}

回答

0

我不能看到您所提供的方法的泄漏,所以我認爲它的發生在其他地方。你應該檢查是否self.myList保留在其他地方,而不會被釋放。

此外,您可能不應該在查看保留計數用於調試目的。保留計數可能會引起誤解,因爲只要釋放次數相同,對象的保留次數就無關緊要。

+0

謝謝...我會檢查self.myList - 沒有想過這件事。它通常作爲一個屬性添加並在dealloc中進行掃描。但可能還有其他地方保留下來。另外,謝謝你的觀點:保留點數。 – Ferris 2009-12-27 07:51:23