2010-12-07 92 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