Dealloc, использовать выпуск или установить значение nil для свойств?
Я заметил небольшое замешательство, рассматривая различные фрагменты кода как в книгах, так и в Интернете, когда дело доходит до реализации dealloc. Мой вопрос заключается в использовании @property, который из следующего должен использоваться. До сих пор я использовал VERSION_001.
@property(nonatomic, retain) NSString *name;
@property(nonatomic, retain) NSString *type;
@property(nonatomic, retain) NSString *payload;
@property(nonatomic, retain) NSString *orbit;
ВЕРСИЯ 001
- (void)dealloc {
[name release];
[type release];
[payload release];
[orbit release];
[super dealloc];
}
ВЕРСИЯ 002
- (void)dealloc {
[self setName:nil];
[self setType:nil];
[self setPayload:nil];
[self setOrbit:nil];
[super dealloc];
}
Ответы
Ответ 1
Нет реальной разницы, если вы не используете ключевое слово @synthesize
. Когда вы устанавливаете свойства в nil, они выходят за сцену установщиком. Теперь может быть небольшое увеличение производительности по сравнению с первой версией, потому что не так много должно произойти за кулисами (например, сравнение указателей и все остальное яблоко скрывается за кулисами). Я всегда использую версию 001, потому что это более важно, и будущим разработчикам не нужно копать, хотя мой код, чтобы понять, что я делаю.