2010-12-07 2 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 с помощью метода удобства/autoreleased, такого как [NSMutableArray arrayWithCapacity: (NSUInteger) numItems] – Rog 2010-12-07 10:33:12

Смежные вопросы