Если вы используете ARC (Automated Reference Counting), тогда все получатели должны выглядеть так, как показано выше.Однако новый стандарт с ARC должен использовать strong
и weak
вместо retain
и assign
соответственно.retain
и assign
по-прежнему будут работать и являются синонимами strong
и weak
, но во всех вновь созданных файлах вместо них будут использоваться эти слова, поэтому важно понимать, что они означают.
Есливы не используете ARC (все еще вариант, даже в iOS 5 и Lion), геттеры могут отличаться в зависимости от retain
, copy
или assign
.
retain
и copy
оба выглядят так:
- (NSString *)name {
return [[name retain] autorelease];
}
assign
довольно прост, но обычно используется для слабых ссылок (например, делегатов):
- (id)delegate {
return delegate;
}
Я пошелв некоторых деталях, потому что важно понимать, что при использовании ARC код для всех 3 выглядит одинаково, но поведение все еще очень похоже на то, что написано выше.Если вы используете atomic
вместо nonatomic
, вам нужно добавить несколько строк блокировки / разблокировки, чтобы сделать метод потокобезопасным.В любом случае обычно лучше использовать средства доступа по умолчанию, сгенерированные с помощью @synthesize
, если вы не хотите сделать что-то действительно сложное.