self.prop = ноль; против [проп релиз], проп = ноль; - PullRequest
4 голосов
/ 13 сентября 2010

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

self.property = nil;

Это освободит счетчик ссылок и убедится, что у меня нет висящего указателя.

Кажется простым, и все же 99% кода, который я вижу, похоже, делают это следующим образом:

[property release];
property = nil;

и да, в большинстве случаев это свойства.У меня ужасное чувство, что я что-то упустил?Сорта, как, когда я забыл поставить "себя".перед некоторыми свойствами и задавался вопросом, почему это терпело крах: -)

1 Ответ

9 голосов
/ 13 сентября 2010

Если вы пытаетесь очистить значение свойства в любом месте, кроме метода dealloc, тогда self.property = nil; - лучший способ сделать это. Он будет выполнять все задачи по управлению памятью, помогая предотвратить любые проблемы.

Если вы используете метод dealloc, то лучший способ сообщить, что ivar обсуждается, но рекомендуется рекомендовать [property release];, поскольку вызов self.property может иметь побочные эффекты. В методе dealloc вызов property = nil; не обязателен.

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