J'ai changé mon projet à l'ARC, et je ne comprends pas si je dois utiliser strong
ou weak
pour IBOutlets. Xcode pour ce faire: dans interface builder, si un créer un UILabel
par exemple et je le connecte avec le rédacteur en chef adjoint à ma ViewController
, c'est de créer ce:
@property (nonatomic, strong) UILabel *aLabel;
Il utilise l' strong
, au lieu de cela, j'ai lu un tutoriel sur la RayWenderlich site web qui disent ceci:
Mais pour ces deux propriétés particulières que j'ai d'autres plans. Au lieu de
strong
,, nous allons déclarer commeweak
.
@property (nonatomic, weak) IBOutlet UITableView *tableView;
@property (nonatomic, weak) IBOutlet UISearchBar *searchBar;
Weak
est recommandée relation pour toute prise depropriétés. Ces objets de vue sont déjà une partie de la vue du contrôleur de la vue hiérarchie et n'ont pas besoin d'être conservés ailleurs. Le gros avantage de déclaration de vos points de venteweak
, c'est qu'il vous fait gagner du temps écrit la viewDidUnload méthode.Actuellement, nos
viewDidUnload
ressemble à ceci:
- (void)viewDidUnload
{
[super viewDidUnload];
self.tableView = nil;
self.searchBar = nil;
soundEffect = nil;
}
Vous pouvez désormais simplifier les suivantes:
- (void)viewDidUnload
{
[super viewDidUnload];
soundEffect = nil;
}
Donc, utiliser l' weak
, au lieu de l' strong
, et de supprimer l'ensemble à néant en l' videDidUnload
, au lieu de Xcode utiliser l' strong
, et l'utilisation de l' self... = nil
dans la viewDidUnload
.
Ma question est: quand dois-je utiliser strong
, et lors de l' weak
?
Je veux aussi l'utiliser pour cible de déploiement iOS 4, donc quand dois-je utiliser l' unsafe_unretain
? N'importe qui peut les aider à m'expliquer avec un petit tutoriel, lors de l'utilisation de strong
, weak
et unsafe_unretain
avec l'ARC?