2010-12-30 5 views
0

Der Speicher ist in diesem Code-Fragment undicht, wie dieses Speicherleck zu beheben?Iphone Speicherleck Problem?

-(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 
} 
+0

Es wäre gut für Sie, den Text Ihres Codes einzufügen, anstatt einen Screenshot zu machen ... –

Antwort

0

Wie geschrieben, gibt es kein Leck in diesem Code. obwohl

Was passiert werden kann, ist die NSDecimalNumber auf dieser Zeile Code zugeordnet ist durchgesickert, weil es wird über beibehalten (oder unter-released) woanders. Versuchen Sie Build- and-Analysis und/oder aktivieren Sie "Track Retain Events" im Zuweisungsinstrument.

Beachten Sie, dass Sie einfach aFinancialLine zurückgeben können, ohne eine NSDictionary Instanz zu erstellen (tut aber nicht weh, dies zu tun, und es ist defensiver).