Voici des informations sur ce que je sais sur les propriétés des variables
- atomique // par défaut
- non atomique
- strong = conserver // par défaut
- faible
- conserver
- attribuer // par défaut
- unsafe_unretained
- copie
- lecture seulement
- readwrite // par défaut
Vous trouverez donc ci-dessous le lien détaillé de l'article où vous pouvez trouver tous les attributs mentionnés ci-dessus, qui vous aideront sans aucun doute. Un grand merci à toutes les personnes qui donnent les meilleures réponses ici !!
Attributs de propriété variable ou modificateurs dans iOS
01. strong (iOS4 = retenir)
- il dit "gardez ceci dans le tas jusqu'à ce que je ne le pointe plus" - en d'autres termes "je suis le propriétaire, vous ne pouvez pas le désallouer avant de viser bien avec cela comme retenir "- Vous n'utilisez Strong que si vous avez besoin de conserver l'objet. - Par défaut, toutes les variables d'instance et les variables locales sont des pointeurs forts. - Nous utilisons généralement strong pour les UIViewControllers (les parents des éléments d'interface utilisateur) - strong est utilisé avec ARC et il vous aide essentiellement, en n'ayant pas à vous soucier du nombre de rétention d'un objet. ARC le libère automatiquement pour vous lorsque vous en avez terminé. L'utilisation du mot-clé strong signifie que vous possédez l'objet.
Exemple:
@property (strong, nonatomic) ViewController *viewController;
@synthesize viewController;
02. faible (iOS4 = unsafe_unretained)
- il dit "gardez ceci tant que quelqu'un d'autre le pointe fortement" - la même chose que assign, pas de conservation ou de libération - Une référence "faible" est une référence que vous ne retenez pas. - Nous utilisons généralement faible pour les IBOutlets (Childs de UIViewController) .Cela fonctionne parce que l'objet enfant n'a besoin d'exister que tant que l'objet parent existe. - une référence faible est une référence qui ne protège pas l'objet référencé de la collecte par un garbage collector. - Faible est essentiellement céder, une propriété non conservée. Sauf lorsque l'objet est désalloué, le pointeur faible est automatiquement mis à nil
Exemple :
@property (weak, nonatomic) IBOutlet UIButton *myButton;
@synthesize myButton;
Expliquez : Merci à BJ Homer
Imaginez que notre objet est un chien, et que le chien veut s'enfuir (être désalloué). Les pointeurs forts sont comme une laisse sur le chien. Tant que vous avez la laisse attachée au chien, le chien ne s'enfuira pas. Si cinq personnes attachent leur laisse à un chien (cinq pointeurs puissants vers un objet), le chien ne s'enfuira pas tant que les cinq laisses ne seront pas détachées. Les pointeurs faibles, par contre, sont comme de petits enfants qui pointent le chien et disent "Regarde! Un chien!" Tant que le chien est toujours en laisse, les petits enfants peuvent toujours voir le chien et ils le montreront toujours. Cependant, dès que toutes les laisses sont détachées, le chien s'enfuit, peu importe le nombre de petits enfants qui le désignent. Dès que le dernier pointeur fort (laisse) ne pointe plus vers un objet, l'objet sera désalloué et tous les pointeurs faibles seront mis à zéro. Quand on utilise faible? La seule fois où vous voudriez utiliser faible, c'est si vous vouliez éviter les cycles de rétention (par exemple, le parent conserve l'enfant et l'enfant conserve le parent de sorte qu'aucun n'est jamais libéré).