fraco ou forte para o IBOutlet e outro [duplicado]
Esta questão já tem uma resposta aqui:
Os IBOutlets devem ser fortes ou fracos no ARC? 11 respostasEu mudei meu projeto para o ARC, e não entendi se tenho que usarstrong
ouweak
para IBOutlets. O Xcode faz isso: no construtor de interface, se criar umUILabel
por exemplo, e eu conecto-o com o editor assistente para o meuViewController
, crie isso:
@property (nonatomic, strong) UILabel *aLabel;
Ele usa ostrong
Em vez disso, li um tutorial no site do RayWenderlich que diz isso:
Mas para essas duas propriedades particulares, tenho outros planos. Ao invés destrong
, vamos declará-los comoweak
.
@property (nonatomic, weak) IBOutlet UITableView *tableView;
@property (nonatomic, weak) IBOutlet UISearchBar *searchBar;
Weak
é a relação recomendada para todossaída propriedades. Esses objetos de visualização já fazem parte da hierarquia de visualizações do controlador de visualização e não precisam ser retidos em outro lugar. A grande vantagem de declarar suas saídasweak
é que você economiza tempo escrevendo o método viewDidUnload.
Atualmente nossoviewDidUnload
se parece com isso:
- (void)viewDidUnload
{
[super viewDidUnload];
self.tableView = nil;
self.searchBar = nil;
soundEffect = nil;
}
Agora você pode simplificá-lo para o seguinte:
- (void)viewDidUnload
{
[super viewDidUnload];
soundEffect = nil;
}
Então useweak
, ao invés destrong
e remova o conjunto para zero novideDidUnload
, em vez disso, o Xcode usa ostrong
e use oself... = nil
noviewDidUnload
.
Minha pergunta é: quando eu tenho que usarstrong
, e quandoweak
? Eu também quero usar para o destino de implantação do iOS 4, então quando eu tenho que usar ounsafe_unretain
? Qualquer um pode ajudar a me explicar bem com um pequeno tutorial, quando usarstrong
, weak
eunsafe_unretain
com ARC?