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