Вопросы о readonly @property в ARC

В моем файле интерфейса (.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, не так ли?

6
задан Enchilada 3 January 2012 в 18:19
поделиться