Когда вы создаете свойство, и компилятор автоматически синтезирует базовый ivar, имеет ли ivar ту же самую семантику сохранения свойство, или семантика сохранения применяется только к «setter»?Какова сохранившаяся семантика синтезированного ivar?
@property (nonatomic, strong) NSObject *strongObject
@property (nonatomic, weak) NSObject *weakObject
_strongObject = [[NSObject alloc] init]; // is this strong?
_weakObject = [[NSObject alloc] init]; // is this weak?
Означает ли это также, что прямое назначение ivar с семантикой копирования фактически сделает копию? Возьмем следующий пример: '@property (nonatomic, copy) NSString * myString;' Custom setter выглядит как 'if (_myString == nil) _myString = @" A "; return _myString; ' – Steveo
Хм, это выглядит странно (особенно оператор return для сеттера), но нет, вам нужно скопировать его явно. ARC обрабатывает счет сохранения, а не операцию копирования. – Merlevede
Мой плохой. Возвратного оператора не должно было быть. – Steveo