Анализ утечек памяти в проекте iPad - PullRequest
0 голосов
/ 01 февраля 2012

Я создал приложение для ipad и сейчас провожу тестирование с помощью Инструментов, чтобы найти утечки памяти и другие проблемы.

Я обнаружил некоторые утечки, но я не могу понять, почему онисчитается утечки памяти ... Кто-то может помочь мне понять?

NSMutableArray *secondArray = [NSMutableArray arrayWithArray:firstArray];

Почему это утечка памяти?Разве он не создает массив с автоматическим выпуском?

Ответы [ 3 ]

3 голосов
/ 01 февраля 2012

arrayWithObjects приводит к автоматическому освобождению массива, но с arrayWithArray вы сохраняете firstArray в secondArray без последующего освобождения firstArray.

2 голосов
/ 01 февраля 2012

Да! Но как насчет firstArray? вы сохраняете его во втором массиве, не копируя его. Так что вы, вероятно, должны выпустить firstArray, как это

NSArray *firstArray = [NSArray alloc] init];

...

NSMutableArray *secondArray = [NSMutableArray arrayWithArray:firstArray];
[firstArray release];
0 голосов
/ 01 февраля 2012

Ну, я все еще пишу свой ответ.

В этой строке нет утечки памяти.Вы создаете secondArray, и он указывает на те же объекты из firstArray.arrayWithArray возвращает автоматически выпущенный объект, поэтому вам не нужно его освобождать.

Но я думаю, что анализатор говорит, что здесь есть потенциальная ситуация, когда у вас есть несколько указателей на один объект.И когда вы отпускаете firstArray, secondArray будет ссылаться на неопределенную память.Это может привести к SIGABRT.

...