2010-12-07 68 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,例如[NSMutableArray arrayWithCapacity:(NSUInteger)numItems] – Rog 2010-12-07 10:33:12