Подтвердить что ты не робот

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];
}
4b9b3361

Ответ 1

Нет реальной разницы, если вы не используете ключевое слово @synthesize. Когда вы устанавливаете свойства в nil, они выходят за сцену установщиком. Теперь может быть небольшое увеличение производительности по сравнению с первой версией, потому что не так много должно произойти за кулисами (например, сравнение указателей и все остальное яблоко скрывается за кулисами). Я всегда использую версию 001, потому что это более важно, и будущим разработчикам не нужно копать, хотя мой код, чтобы понять, что я делаю.