2010-02-14 1 views
0

Приборы говорят мне, что следующая строка из приведенного ниже кода протекает: Я не могу понять, как устранить эту утечку.Что происходит в этом заявлении с помощью replaceObjectAtIndex

[self.selectedElement.usrAdvancedBuyingPercents replaceObjectAtIndex: selectedRow withObject: [numberFormatter stringFromNumber: percent]];

- (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

Заменяет ли replaceObjectAtIndex то, что было ранее в этом индексе? –

+0

@ Не знаю, он должен –

+0

Код, который вы отправили, выглядит правильно для меня. Можете ли вы опубликовать более конкретную информацию? (то есть, что говорит «Ведомости», что вы просачиваетесь?) –

ответ

1

NSString вы создаете из числа не выпускается где-то.

Проблема не в показанном коде - это где-то в другом месте, которое берет строку из этого массива, сохраняя ее, а затем не отпускает. Утечки просто показывают вам, где первоначально была выделена утечка памяти, и единственное, что выделяется в этой строке, - [numberFormatter stringFromNumber:percentage].

Либо это, либо весь массив не будет выпущен правильно (но тогда все, что создаст usrAdvancedBuyingPercents, также покажет, что оно протекает).