2010-02-14 9 views
0

Instruments me dit que la ligne suivante du code ci-dessous fuit: Je n'arrive pas à comprendre comment réparer cette fuite.Ce qui fuit dans cette instruction en utilisant replaceObjectAtIndex

[self.selectedElement.usrAdvancedBuyingPercents remplacerObjetAtIndex: selectedRow avecObject: [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

Est-ce que replaceObjectAtIndex publie ce qui était précédemment dans cet index? –

+0

@Anon oui, il devrait –

+0

Le code que vous avez posté me semble correct. Pouvez-vous poster des informations plus spécifiques? (c'est-à-dire, qu'est-ce que les instruments disent que vous fuyez?) –

Répondre

1

Le NSString que vous créez à partir du numéro n'est pas libéré quelque part.

Le problème n'est pas dans le code qui est affiché - c'est un autre endroit qui prend une chaîne de ce tableau, la retient, puis ne la libère pas. Les fuites vous indiquent simplement où la mémoire qui a été divulguée a été initialement allouée, et la seule chose sur cette ligne qui alloue de la mémoire est [numberFormatter stringFromNumber:percentage]. Soit cela, soit tout le tableau n'est pas publié correctement (mais alors tout ce qui construit usrAdvancedBuyingPercents montrerait aussi qu'il fuit).