乐器告诉我下面代码中的以下行是泄漏:我无法弄清楚如何解决这个漏洞。
[self.selectedElement.usrAdvancedBuyingPercents replaceObjectAtIndex:selectedRow withObject:[numberFormatter stringFromNumber:percentage]];
- (IBAction) simpleMarginSliderValueChanged:(UISlider *)sender {
NSDecimalNumber *percentage = (NSDecimalNumber *)[NSDecimalNumber numberWithFloat:[sender value]];
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setPositiveFormat:@"#.##"];
[self.selectedElement.usrAdvancedBuyingPercents replaceObjectAtIndex:selectedRow withObject:[numberFormatter stringFromNumber:percentage]];
[numberFormatter release];
}
答案 0 :(得分:1)
您从该号码创建的NSString未在某处释放。
问题不在于显示的代码 - 它在其他地方从该数组中取出一个字符串,保留它,然后不释放它。泄漏只会向您显示最初分配泄漏内存的位置,并且该行上唯一分配内存的是[numberFormatter stringFromNumber:percentage]
。
要么是这样,要么整个数组没有正确释放(但是无论如何构建usrAdvancedBuyingPercents也会显示泄漏)。