Утечка памяти на телефоне? - PullRequest
0 голосов
/ 30 декабря 2010

В этом фрагменте кода происходит утечка памяти, как исправить утечку памяти?

-(NSDictionary *)sanitizedFinancialLine:(NSDictionary *)theFinancialLine
{
 NSMutableDictionary *aFinancialLine = [NSMutableDictionary dictionaryWithDictionary:theFinancialLine];


for (id key in [aFinancialLine allKeys]) {
 id something = [aFinancialLine objectForKey:key];
 if ([something respondsToSelector:@selector(decimalValue)]) {
something = [NSDecimalNumber decimalNumberWithDecimal:[(NSNumber *)something decimalValue]]; // memory is leaking here
[aFinancialLine setObject:something forKey:key];
   }
}
 return [NSDictionary dictionaryWithDictionary:aFinancialLine];// and here
}

1 Ответ

0 голосов
/ 30 декабря 2010

Как написано, в этом коде нет утечки .

Что может случиться, однако, это то, что NSDecimalNumber , выделенный в этой строке кода, просачивается, потому что он чрезмерно сохраняется (или недоиспускается) где-то еще. Попробуйте построить и проанализировать и / или включить «Отслеживать сохранение событий» в инструменте распределения.

Обратите внимание, что вы можете просто вернуть aFinancialLine, не создавая экземпляр NSDictionary (хотя это не помешает, и это более оборонительно).

...