NSMutableArray和属性泄漏内存

时间:2009-12-27 04:45:39

标签: iphone memory-leaks nsmutablearray instruments

我在我的最新应用程序中处于内存泄漏清理模式,并且遇到了一些我无法解决的问题。

除了1个唠叨问题外,还清除了以下方法。 Instruments告诉我,我的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

}

1 个答案:

答案 0 :(得分:0)

我看不到你提供的方法有泄漏,所以我认为它正在其他地方发生。您应该检查self.myList是否在未被释放的情况下保留在其他地方。

此外,您可能不应该查看保留计数以进行调试。保留计数可能会产生误导,因为只要对象被释放了相同的次数,对象保留的次数无关紧要。