Проверьте на утечку памяти - PullRequest
1 голос
/ 07 декабря 2010

Привет, пожалуйста, скажите, есть ли утечка памяти в моем коде или нет ..
Я устраняю утечки памяти в моем приложении, но не понимаю, может ли это привести к утечке памяти?

     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];

Ответы [ 2 ]

4 голосов
/ 07 декабря 2010

Этот код пропустит память. Вы переназначаете dataArray, не освобождая старое значение.Выполните присваивание через сгенерированное свойство, и старое значение будет выпущено первым.

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

Вы также можете реструктурировать свой код, чтобы избежать создания массива, если он вам действительно не нужен:

if (condition)
{
    // Create array here
}
else
{
    // get array from other place
}
0 голосов
/ 07 декабря 2010

Вы можете использовать инструменты для поиска утечек памяти.

http://www.cimgf.com/2008/04/02/cocoa-tutorial-fixing-memory-leaks-with-instruments/

...