Я переключил свой проект на ARC, и я не понимаю, должен ли я использовать strong
или weak
для IBOutlets. Xcode делает это: в построителе интерфейсов, например, для создания UILabel
, и я подключаю его с помощником редактора к моему ViewController
, он создает это:
@property (nonatomic, strong) UILabel *aLabel;
Он использует strong
, вместо этого я прочитал учебник на веб-сайте RayWenderlich, который говорит следующее:
Но для этих двух конкретных свойств у меня есть другие планы. Вместо
strong
, мы объявим их какweak
.
@property (nonatomic, weak) IBOutlet UITableView *tableView;
@property (nonatomic, weak) IBOutlet UISearchBar *searchBar;
weak
является рекомендуемым соотношением для всех свойств выхода. Эти объекты просмотра уже являются частью представления диспетчера представлений иерархии и не нужно сохранять в другом месте. Большое преимущество объявления ваших торговых точекweak
заключается в том, что это экономит ваше время на viewDidUnload.В настоящее время наш
viewDidUnload
выглядит так:
- (void)viewDidUnload
{
[super viewDidUnload];
self.tableView = nil;
self.searchBar = nil;
soundEffect = nil;
}
Теперь вы можете упростить его:
- (void)viewDidUnload
{
[super viewDidUnload];
soundEffect = nil;
}
Поэтому используйте weak
вместо strong
и удалите набор в nil в videDidUnload
, вместо Xcode используйте strong
и используйте self... = nil
в viewDidUnload
.
Мой вопрос: когда мне нужно использовать strong
, а когда weak
?
Я хочу также использовать для цели развертывания iOS 4, поэтому, когда мне нужно использовать unsafe_unretain
? Любой может помочь мне хорошо объяснить небольшой учебник, когда используйте strong
, weak
и unsafe_unretain
с ARC?