2010-12-07 10 views
1

こんにちは、私のコードにメモリリークがあるかどうか教えてください。
私のアプリケーションでメモリリークを解決していますが、ここで混乱してメモリリークが発生しますか?メモリリークを確認する

 NSMutableArray *dataArray=[[NSMutableArray alloc]init]; 

if(condition) 
{ 
     [dataArray addObject:[appDelegate selectFromDatabase:x]];//returning an autoreleased array 
} 
else 
{ 
dataArray=[appDelegate selectFromDatabase:a]; 
} 
    //use dataArray 

     [dataArray release]; 

答えて

4

このコードはメモリをリークします。古い値を解放せずにdataArrayを再割り当てします。生成されたプロパティを介して割り当てを行い、古い値が最初に解放されます。

else 
{ 
    dataArray=[appDelegate selectFromDatabase:a]; 
} 

あなたが本当にそれを必要としない限り、あなたはまた、配列を作成しないようにあなたのコードを再構築できます。

if (condition) 
{ 
    // Create array here 
} 
else 
{ 
    // get array from other place 
} 
+0

グッドピックアップ。また、[NSMutableArray arrayWithCapacity:(NSUInteger)numItems] – Rog

+0

@Rog - Fair pointのような便利/自動再利用メソッドでNSMutableArrayを初期化することもできますが、必要な場合にのみ配列が作成される場合はコードを理解しやすくなります。私は私の答えを更新しました – willcodejavaforfood

+0

+1 - ありがとう......... – Saawan

関連する問題