Vidéo: Comment créer un compte App Store Gratuit sur iPhone (iOS) 2025
Pour rendre les variables d'instance disponibles en dehors de leur classe de manière contrôlée, la meilleure pratique dans le développement d'une application iOS est d'écrire des méthodes d'accès. > getters et setters ). Les propriétés fournissent un moyen déclaratif de le faire en utilisant les directives de propriété @property et @synthesize. En utilisant un style déclaratif, vous faites que votre programme fasse quelque chose sans écrire de code. Le code est écrit, mais par le compilateur (qui génère automatiquement les méthodes d'accès), pas par vous.
Pour commencer, la propriété doit être déclarée dans l'interface de la classe StackOfInteger. L'extrait suivant montre comment faire en utilisant la directive du compilateur @property:
@interface StackOfInteger: NSObject {@protected // Il s'agit des éléments NSMutableArray * par défaut; @private int last;} @property (en lecture seule, atomique) int stackPointer; … autres méthodes StackOfInteger -d
Notez que, même si le terme
propriété semble être plus proche d'une variable que d'une méthode, la définition de la propriété va dans la section où les méthodes sont définies, non où les variables d'instance sont définies. Notez également que cette propriété a deux attributs: atomic et readonly.
Dans cet exemple, la propriété stackPointer est liée à la dernière variable d'instance. La directive synthesize ressemble à ceci:
La propriété est maintenant prête à être utilisée.
Vous pouvez utiliser la propriété de deux façons, comme indiqué dans la fonction principale de l'exemple:
Vous pouvez utiliser une méthode accesseur:
-
printf ("Nombre d'éléments% dn", [myStack stackPointer]);
Ou vous pouvez utiliser la notation par points pour faire la même chose, comme indiqué ici:
-
printf ("Nombre d'éléments utilisant la notation par points% dn", myStack.stackPointer);
Notez que les noms des accesseurs (getters et setters) suivent une convention de nommage. La méthode getter est le nom de la propriété. Ainsi, pour la propriété stackPointer, la méthode getter est également stackPointer. La méthode setter est le nom de la propriété dans le cas de chameau préfixé par l'ensemble de chaînes - le nom de la méthode setter pour stackPointer est setStackPointer.
Utilisez
l'orthographe du chameau (une lettre majuscule au milieu d'un terme) lorsque vous épelez ces méthodes. Par conséquent, S dans la pile de mots est en majuscule dans le nom de la méthode setter, même si elle n'est pas mise en majuscule dans le nom de la propriété. Notez que la méthode setter n'est pas générée pour cette propriété car elle est en lecture seule. Il est temps de passer aux attributs des propriétés. Ils sont tous dans la liste suivante avec ce qu'ils font:
nonatomic: Par défaut, les méthodes d'accès générées pour les propriétés incluent le verrouillage pour les sécuriser pour un accès simultané par des programmes multithread. Plus précisément, le comportement par défaut est atomique. Si vous utilisez l'attribut nonatomic, aucun verrouillage n'est utilisé.
-
Il n'y a pas d'attribut nommé atomic (l'opération atomique est supposée par l'absence de l'attribut nonatomic).
readwrite: Si vous utilisez cette propriété, elle peut être écrite et lue. À la fois un getter et un setter sont mis à disposition lors de la synthèse.
-
en lecture seule: le compilateur rend seulement un getter disponible.
