Сохранение / освобождение памяти со свойствами

#iphone #memory-management

#iPhone #управление памятью

Вопрос:

У меня есть метод, который получает данные из диспетчера данных. Это выглядит примерно так:

 - (void)GetData {
    NSArray *anArray = [datamanager GetData]; // GetData returns an autoreleased array
    self.MyDataArray = anArray;  
}
  

MyDataArray объявляется как свойство (неатомное, сохранение)

Мой вопрос в том, что функция datamanager getData изменяется в другом месте кода, возвращая разные значения для массива при вызове getData. Я в замешательстве от строки self.MyDataArray = anArray. Потому что, насколько я знаю, это сохранит anArray в первый раз, затем метод getData вызывается снова, затем сохраняется другой anArray и так далее. Так это утечка памяти? Если да, то что мне нужно сделать, чтобы избежать утечки памяти? Спасибо.

Ответ №1:

Утечки памяти нет, потому что MyDataArray, объявленный как retain , имеет реализацию, которая освобождает любую ссылку, которую она удерживает, прежде чем сохранять новую ссылку, когда вы это делаете self.MyDataArray = anArray .