Это не бета-версия. Xcode 4.2.1 имеет такое же поведение (бета-версии под NDA и должны обсуждаться только на законных форумах Apple):
Сильный - значение по умолчанию для ivar
с.Для ivars, если вы хотите __unsafe_unretained
или __weak
, вы должны указать.
Лучше всего указывать атрибуты в объявлениях свойств.Одним из примеров, который всплывает быстрее всего, является текст свойства UILabel
, определяемый как:
@property(nonatomic,copy) NSString *text; // default is nil
В этом примере атрибут copy
говорит мне, что я могу передать ссылку NSMutableString
на метку ион сделает копию, и я смогу поменять строку, метка останется прежней.Поведение четко определено.
И я подозреваю, что именно четко определенное поведение было самой заметной причиной, по которой компилятор ARC заставляет вас указывать атрибуты хранилища.Помните, что благодаря новым средам выполнения, исключающим необходимость объявлять ivars для свойств и @synthesize
для методов доступа, вполне возможно, что объявление свойства - это единственная точка, которую вы заметите, если вы случайно сохранили делегата.
Также рассмотрите возможностьвероятность того, что несколько классов в проекте могли быть исключены из ARC, в этих случаях внутренняя реализация будет полностью непрозрачна для ARC.