#objective-c #retain
#objective-c #сохранить
Вопрос:
Я узнал, что если a @property
имеет атрибут retain
, он всегда должен быть освобожден в dealloc
методе. Но если программа никогда не выделяет память для свойства, это означает, что мы освобождаем нераспределенный объект, верно? Означает ли это, что свойство должно быть выделено в init
методе?
Комментарии:
1. В настоящее время я использую его без ARC для учебных целей
Ответ №1:
Но если программа никогда не выделяет память для свойства, это означает, что мы освобождаем нераспределенный объект, верно?
Неправильно. Если вы говорите [self->myVar release]
in dealloc
, то либо myVar
было присвоено значение, либо нет:
-
Если он есть, он теперь освобожден, чего вы и хотите.
-
Если этого не произошло, это так
nil
, и ничего не происходит, и никакого вреда не причинено, потому что сообщение tonil
ничего не делает.