У меня есть несколько сомнений относительно использования атрибутов.Прочитав документ перехода ARC, вместо сохранения и назначения следует использовать сильные и слабые.
Однако есть как минимум два случая, когда автоматически сгенерированный код XCode делает что-то еще.Я хотел бы знать, является ли это просто «все еще не обновленным» инструментом из XCode, или я что-то упускаю.
Первый случай - это автоматическая генерация управляемого объекта Core Data.
После создания соответствующих классов в файле .h появляется следующее:
@property(nonatomic,retain) NSString *myProperty;
Что делает компилятор в этом случае?Замените retain
на strong
?
Но самый странный случай (из-за моего отсутствия знаний) - это IBOutlet
, автоматически сгенерированный код при подключении к розетке Interface Builder с файлом .h выглядит так:
@property (unsafe_unretained, nonatomic) IBOutlet UILabel *myOutlet;
и, опять же, это кажется отличным от рекомендуемых «слабых» атрибутов.Я имею в виду рекомендации пользователей на разных форумах.
И это добавлено в viewDidUnload:
- (void)viewDidUnload {
[self setMyOutlet:nil];
}
зачем нам это утверждение?Даже если при работе с инструментами профилирования нет следов утечки памяти или других проблем с памятью?Я имею в виду, без установки на nil
все работает нормально.