В моем файле интерфейса (.h) у меня есть
@property(readonly) NSString *foo;
и в моем файле реализации (.m) у меня есть
@synthesize foo;
При включенном ARC компилятор выдает ошибку: Automatic Reference Counting Issue: ARC запрещает синтезировать свойство объекта Objective-C с неопределенным атрибутом владения или хранения.
Ошибка исчезает, если я добавляю к свойству strong
, weak
или copy
. Почему так? Почему для свойства только для чтения должны быть какие-то различия между этими вещами, что это за различия, и почему программист должен о них беспокоиться? Почему компилятор не может разумно вывести значение по умолчанию для свойства "только для чтения"?
Еще один вопрос, пока я здесь: strong
, weak
или copy
- это единственные вещи, которые имеют смысл в ARC, верно? Я не должен больше использовать retain
и assign
, не так ли?