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 odpowiedzi

Zmienił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 tegostrongi usuń zestaw do zera wvideDidUnload, zamiast Xcode użyjstrongi 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?

questionAnswers(2)

yourAnswerToTheQuestion