Я использовал параметр "Преобразовать в Objective C ARC" в Xcode 4.3, чтобы преобразовать проект, запущенный в Xcode 4.0, для использования ARC. После исправления ошибок, обнаруженных инструментом, я прошел процесс, когда инструмент переноса удалил все сообщения о выпуске, а также сохранил атрибуты в объявлениях свойств. Итак, теперь у меня есть все мои свойства, имеющие только (неатомный) атрибут. От чтения документации у меня все еще нет четкого ответа о том, что делать.
Итак, мой вопрос: если вы опустите ключевое слово в отношении семантики setter (сильная, слабая, сохраняющая, назначающая) в объявлении свойства, каков атрибут по умолчанию при свойствах при использовании ARC?
Я нашел в документации, что атрибут свойства по умолчанию присваивает. Однако они также говорят, что теперь атрибут по умолчанию для ivars, если вы его опустите, сильный.
Чтобы лучше объяснить мой вопрос, вот пример. я заголовочный файл имеет декларацию:
@property (nonatomic) MyClass *objectToUse;
и в нашей реализации мы просто имеем
@synthesize objectToUse;
Если мы затем напишем внутри некоторого метода:
self.objectToUse = [[MyClass alloc] init];
мы создали сильную (удерживающую) или слабую (назначающую) ссылку? Если вместо этого писать
objectToUse = [[MyClass alloc] init];
используя ivar, изменили ли мы ситуацию, связанную с политикой хранения объектов? Мне кажется, что теперь с ARC лучшая практика использования свойств для управления памятью уже не такая практика.