słaby lub silny dla IBOutlet i innych [duplikatów]
To pytanie ma już tutaj odpowiedź:
Czy IBOutlets powinny być silne lub słabe w ARC? 11 odpowiedziZmieniłem projekt na ARC i nie rozumiem, czy muszę go używaćstrong
lubweak
dla IBOutlets. Xcode robi to: w budowniczym interfejsu, jeśli tworzyszUILabel
na przykład podłączam go do asystenta edytoraViewController
, tworzy to:
@property (nonatomic, strong) UILabel *aLabel;
Używastrong
, zamiast tego przeczytałem tutorial na stronie RayWenderlich, który mówi:
Ale dla tych dwóch szczególnych właściwości mam inne plany. Zamiaststrong
, ogłosimy je jakoweak
.
@property (nonatomic, weak) IBOutlet UITableView *tableView;
@property (nonatomic, weak) IBOutlet UISearchBar *searchBar;
Weak
jest zalecaną relacją dla wszystkichwylot nieruchomości. Te obiekty widoku są już częścią hierarchii widoków kontrolera widoku i nie trzeba ich przechowywać w innym miejscu. Duża zaleta deklarowania punktów sprzedażyweak
jest to, że oszczędza czas na pisanie metody viewDidUnload.
Obecnie naszaviewDidUnload
wygląda tak:
- (void)viewDidUnload
{
[super viewDidUnload];
self.tableView = nil;
self.searchBar = nil;
soundEffect = nil;
}
Możesz teraz uprościć go do następujących:
- (void)viewDidUnload
{
[super viewDidUnload];
soundEffect = nil;
}
Więc używajweak
, zamiast tegostrong
i usuń zestaw do zera wvideDidUnload
, zamiast Xcode użyjstrong
i użyjself... = nil
wviewDidUnload
.
Moje pytanie brzmi: kiedy muszę korzystaćstrong
, i kiedyweak
? Chcę także użyć do wdrożenia docelowego systemu iOS 4, więc kiedy muszę użyćunsafe_unretain
? Każdy może pomóc mi dobrze wyjaśnić za pomocą małego samouczka, gdy jest używanystrong
, weak
iunsafe_unretain
z ARC?