【发布时间】:2011-08-03 16:07:58
【问题描述】:
NSNumber for 循环内的内存泄漏 - 在 OSX Lion 上的 Xcode Instruments 版本 4.1 开始发生 - 这是在使用仪器在设备配置文件上执行时泄漏。任何想法表示赞赏。
int currentActivityScore = [self.activityScore intValue];
int deltaCriteriaScore = [[segmentItemArray objectAtIndex:3] intValue];
int newActivityScore = currentActivityScore + deltaCriteriaScore;
self.activityScore = [NSNumber numberWithInt:newActivityScore];
我也试过这个代码,还是有泄漏!!!
int currentActivityScore = [self.activityScore intValue];
int deltaCriteriaScore = [[segmentItemArray objectAtIndex:3] intValue];
int newActivityScore = currentActivityScore + deltaCriteriaScore;
NSNumber *newActivityScoreNumber = [[NSNumber alloc] initWithInt:newActivityScore];
self.activityScore = newActivityScoreNumber;
[newActivityScoreNumber release];
【问题讨论】:
-
您将
activityScore声明为retain还是copy? -
您放弃在
-dealloc中的activityScore的所有权吗? -
当您指向它时,这不是泄漏。仪器将指向它创建的位置,以说明泄漏的“原因”,但真正的原因是你没有彻底摆脱它。你如何处理这个 ivar?
-
保留。我也没有提到这是在执行 10 个循环的 For 循环中运行的。
-
我在视图卸载和dealloc中都调用了self.activityScore = nil。我也尝试过发布,但没有成功。