dealloc или выпуск лучшей практики в объективе-c? - PullRequest
0 голосов
/ 03 августа 2010

Я просто освобождаю объекты как таковые:

[myObj release];

Я видел, как другие добавляют:

[myObj release]; myObj = nil;

Является ли последнее более выгодным, потому что теперь никогда не будет ссылки на этоуказатель

Ответы [ 2 ]

4 голосов
/ 03 августа 2010

Это просто для того, чтобы другие последовательные сообщения, которые могут быть отправлены на myObj, не генерировали исключения.Отправка сообщения на nil возможна в Objective-C.

В противном случае myObj по-прежнему указывает на адрес памяти, где был , и доступ к нему может привести к ошибке BAD_ACCESS.

1 голос
/ 03 августа 2010

По моему мнению, это зависит только от объема myObject.

  1. Если область действия myObject заканчивается оператором release, то нет никакого преимущества в установке его на nil

  2. Если область действия myObject не заканчивается оператором release, тогда установка объекта на nil сделает ваш доступ к объекту безопасным. Существует большая вероятность того, что память myObject будет освобождена, и вы попытаетесь получить доступ к этой области памяти, что приведет к исключению.

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