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