Можно создать дубликат:
With ARC why use @properties anymore?Не устраняет ли ARC необходимость в свойствах объекта Objective-C?
NB: На самом деле я не думаю, что мы можем избавиться от свойств, но я пытаюсь понять рассуждения о том, почему нет. :)
Ссылаясь на this question, нам кажется, что основная причина, по которой мы используем свойства, заключается в том, чтобы избежать проблем с управлением памятью. Другими словами, создав свойство, мы избавляемся от необходимости выписывать все эти сохраняют и методы высвобождения:
- (void) setOtherObj:(MyOtherObject *)anOtherObject {
if (otherObject == anOtherObject) {
return;
}
MyOtherObject *oldOtherObject = otherObject; // keep a reference to the old value for a second
otherObject = [anOtherObject retain]; // put the new value in
[oldOtherObject release]; // let go of the old object
}
Поскольку ARC занимается этим сейчас, мы не могли избавиться от свойств все вместе и просто установить ivars, делая что-то вроде otherObject = anotherObject
?
Какова цель/роль свойств? (Игнорируйте '@property удержание' для аргумента.) Какова цель/роль ARC? –
Свойства по-прежнему помогают принудительно инкапсулировать и скрывать данные. – tronbabylove