Как решить проблему «потенциальной утечки» - PullRequest
0 голосов
/ 24 января 2012

Я использую инструмент «анализ» в xcode для проверки потенциальных утечек в моем приложении.

В результате я получаю следующее предупреждение.

enter image description here

Как устранить потенциальную утечку, показанную выше?"self.answerArray" - это просто массив, который я объявил в своем заголовочном файле

enter image description here

Ответы [ 2 ]

1 голос
/ 24 января 2012

Вы вызвали mutableCopy для массива (который возвращает новый массив с счетом сохранения +1 - он принадлежит вам), и вы присваиваете его свойству (которое, как я полагаю, является сильным / сохраняющим свойством)и ты не выпускаешь это.Вы теряете память.

Вы должны освободить tempArray после присвоения его свойству - и убедиться, что свойство освобождено в методе dealloc вашего класса.

0 голосов
/ 24 января 2012

Вы должны либо отправить retain / release в answerArray (освободить старый объект перед назначением нового, сохранить новый объект), либо, возможно, лучше объявить свойство

@property (retain) NSArray* answerArray;

таким образом, компилятор сгенерирует освобождение / сохранение (при назначении) для вас. См. документацию . В противном случае объект answerArray, на который ссылалась прежде, чем присваивание (answerArray = tempArray) останется в памяти.

Если вы будете использовать объявленное свойство, обязательно добавьте временную переменную в пул авто-релиза:

tempArray = [[self.answerArray mutableCopy]autorelease];

или просто отправьте его, отпустите его самостоятельно (прямо перед тем, как оно выйдет за рамки).

...