Управление памятью iPhone: релиз после установки self.someProperty = nil - PullRequest
0 голосов
/ 09 января 2011

Я читаю код LazyTableImages , который Apple выпустила, и они что-то делают для этого (в подклассе NSOperation):

- (void)dealloc {
    [myProperty release];
    [myProperty2 release];
}

- (void)main {
    //
    // Parse operation undertaken here
    //
    self.myProperty = nil;
    self.myProperty2 = nil;
}

Я думаю, что они делают это в случае, если dealloc вызывается перед установкой свойств nil .

Правильно ли мое мышление здесь? Релизы не нужны , поскольку self.myProperty = nil эффективно выпускает myProperty?

Одна вещь, которую я заметил в этом коде, состоит в том, что они не release сохраняют все объекты в dealloc, только некоторые из них, что на самом деле является причиной моего замешательства.

Приветствия

1 Ответ

4 голосов
/ 09 января 2011

Вы не можете сделать self.myProperty = nil или даже [myProperty release] после dealloc.Знаю, почему? Поскольку self больше не существует.

Что касается вашего вопроса, похоже, что выпуски в dealloc не нужны, но все же хорошая практика - очистить ваш экземплярпеременные в вашем методе dealloc.

edit

Как отметил Питер в комментарии, если метод -main никогда не выполняется, то он имеет операторы releaseв -dealloc необходимо;без них у тебя бы пропала память.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...