#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
.