Не то, чтобы я защищал небрежность, но разве self.prop = ноль не защищает от непреднамеренного чрезмерного выпуска?

ю, что объявленное свойство генерирует метод доступа, который в некотором смысле является просто синтаксическим сахаром.

Я нашел довольно много людей используютself.property = nil в ихdealloc метод.

1) в AppleУправление памятью документ, стр. 23 говорит:

Единственные места, где вы не должны использовать методы доступа для установки переменной экземпляра, это методы init и dealloc.

почему не должен?

2) в яблочномObjective-C 2.0, с74

Объявленные свойства принципиально заменяют объявления методов доступа; когда вы синтезируете свойство, компилятор создает только любые отсутствующие методы доступа. Там нет прямого взаимодействия сdeallocМетод - свойства не освобождаются автоматически для вас. Объявленные свойства, тем не менее, предоставляют полезный способ для перекрестной проверки реализации вашегоdeallocМетод: вы можете найти все объявления свойств в вашем заголовочном файле и убедиться, что свойства объекта не отмеченыassignвыпущены, и те, отмеченныеassignне выпущены

Примечание: как правило, вdealloc метод вы должныrelease Переменные экземпляра объекта напрямую (вместо вызова метода доступа и передачиnil в качестве параметра), как показано в этом примере:

- (void)dealloc { [property release]; [super dealloc]; }

Однако если вы используете современную среду выполнения и синтезируете переменную экземпляра, вы не можете напрямую получить доступ к переменной экземпляра, поэтому вы должны вызвать метод доступа:

- (void)dealloc { [self setProperty:nil]; [super dealloc]; }

Что означает записка?

я нашел[property release]; а также[self setProperty:nil]; обе работают.

Ответы на вопрос(1)

Ваш ответ на вопрос