Освобождение свойств - PullRequest
       1

Освобождение свойств

0 голосов
/ 07 марта 2011

У меня есть две строки NSS, и они также имеют свойство синтезировать.Есть ли необходимость в освобождении этих объектов?

Ответы [ 3 ]

3 голосов
/ 07 марта 2011

Если свойство копируется или сохраняется, вы должны выпустить ivar. Если значение только что назначено, вы не должны выпускать.

1 голос
/ 07 марта 2011

Да! Все, что является типом указателя, которое является свойством и синтезом, должно быть освобождено

0 голосов
/ 07 марта 2011

Нужно ли вам звонить релиз на самом деле зависит.

Если вы вызвали alloc + init, а затем присвоили свойству, то вам нужно отменить. Причина в том, что alloc + init увеличивает счетчик ссылок на 1, поэтому вам нужно иметь соответствующий выпуск, чтобы возвращать счетчик ссылок на 0. Выпуск должен быть в методе dealloc класса.

Однако эти свойства можно использовать и без вызова alloc + init. Тогда обычно вам не нужно называть релиз. Например, если вы используете self.property = [NSString stringWithFormat: @ "..."], тогда нет необходимости вызывать release, на самом деле вызывать release было бы неправильно.

Кроме того, вы также можете принять решение об автоматическом освобождении объектов, что говорит пулу автоматического выпуска об автоматическом освобождении объектов в более позднее время. Это еще один случай, когда вам не нужно вручную отпускать объект.

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