0

私は現在のアプリケーションからの漏れをすべて排除しました。しかし、インストゥルメンツは、以下の方法では漏れがあることを常に私に伝えています。NSMutableArray型のリークを検出しようとしています。インストゥルメントは、メソッド内にリークを表示

リークのタイプはNSMutableArrayで、サイズは16または32バイトです。はい、私はそれほど多くはないが、それが合計することを知っています。私のコードを漏れなくするために解決しなければならない学問的質問としてもそれを見てください。直接、私は正確に伝えることはできませんが、あなたには、いくつかの冗長なコードを書いているインストゥルメントの出力を見ずに

+ (id) meterFromDict:(NSDictionary*)dict { 
    Meter* resMeter = [[Meter alloc] initWithType:[[dict objectForKey:@"MeterBase"] intValue]]; 
    //NSLog(@"dict: %@",dict); 
    resMeter.volume = nil; 
    resMeter.sounds = nil; 
    resMeter.repeats = nil; 

    resMeter.volume = [[[NSMutableArray alloc] initWithArray:[dict objectForKey:@"volumeArray"]] autorelease]; 
    resMeter.sounds = [[[NSMutableArray alloc] initWithArray:[dict objectForKey:@"soundsArray"]] autorelease]; 
    resMeter.repeats = [[[NSMutableArray alloc] initWithArray:[dict objectForKey:@"repeatsArray"]] autorelease]; 
    //NSLog(@"MeterFromDict called and resmeter.repeats count is : %i",[resMeter.repeats count]); 
    resMeter.bpm = [[dict objectForKey:@"BPM"] floatValue]; 

    return [resMeter autorelease]; 
} 
+4

コードに明らかなリークはありません。それはMeterクラスにあるかもしれませんか? – amattn

+0

'initWithType'インスタンスメソッドを詳しく調べてみるといいでしょう。たぶん、漏れがある – basvk

答えて

0

:これを試してみてください:

+ (id) meterFromDict:(NSDictionary*)dict { 
    Meter* resMeter = [[Meter alloc] initWithType:[[dict objectForKey:@"MeterBase"] intValue]]; 
    //NSLog(@"dict: %@",dict); 

    resMeter.volume = [dict objectForKey:@"volumeArray"]; 
    resMeter.sounds = [dict objectForKey:@"soundsArray"]; 
    resMeter.repeats = [dict objectForKey:@"repeatsArray"]; 
    //NSLog(@"MeterFromDict called and resmeter.repeats count is : %i",[resMeter.repeats count]); 
    resMeter.bpm = [[dict objectForKey:@"BPM"] floatValue]; 

    return [resMeter autorelease]; 
} 

ない点は、新しい割り当てる前にあなたの特性をnillingではありません値をそれらに割り当てます。

また、あなたがすでに持っている配列のための新しい配列を作成することを指摘してください。 volumeととrepeatsのプロパティがcopyの代わりにretainであると正しく宣言している場合は、

これを試して、効果があるかどうかを確認してください。

+0

ありがとう、それは実際にそれを解決しました。繰り返しますが、あなたのコードは短く、より直接的です。 – Bersaelor

関連する問題