Table des matières:
- Sémantique sémantique / propriété
- Écriture
- Noms des méthodes d'accesseur
- Vous pouvez utiliser cet attribut pour spécifier que les méthodes d'accès ne sont pas atomiques. (Aucun mot-clé ne signifie atomique.) Cela a à voir avec les problèmes de concurrence. Si vous spécifiez nonatomic, un accesseur synthétisé pour une propriété d'objet renvoie simplement la valeur directement. Sinon, un accesseur get synthétisé pour une propriété d'objet utilise un verrou et conserve et libère automatiquement la valeur renvoyée.
Vidéo: Objective-C : Déclaration et définition de fonctions 2025
Vous pouvez définir certains attributs de propriété lorsque vous déclarez une propriété pour votre application iOS Jetez un oeil pour découvrir plus de détails sur les attributs que vous pouvez définir lors de la programmation.
Sémantique sémantique / propriété
Ces propriétés spécifient le mode de gestion du stockage des variables d'instance:
-
strong (similaire à retain, utilisé antérieurement à ARC) crée une méthode accesseur qui indique que l'objet pointé sur cette propriété sera conservé pendant qu'il est dans la portée (ou jusqu'à ce qu'il soit réglé à zéro). Ceci est la valeur par défault.
-
faible (similaire à assign, utilisé avant ARC) crée un accesseur qui utilise une affectation simple. Vous utilisez généralement cet attribut pour les types scalaires tels que NSInteger et CGRect, ou (dans un environnement compté par référence) pour les objets que vous ne possédez pas - délégués, par exemple - et pour éviter les problèmes de cycle de conservation.
-
copy spécifie qu'une copie de l'objet doit être utilisée pour l'affectation. La valeur précédente est envoyée un message de libération.
La copie est faite en invoquant la méthode de copie. Cet attribut est valide uniquement pour les types d'objets qui doivent implémenter le protocole NSCopying.
Pour les propriétés d'objet, vous devez spécifier explicitement l'un des types listés précédemment; sinon, vous obtenez un avertissement du compilateur. Vous devez donc réfléchir au comportement de gestion de la mémoire que vous souhaitez et entrer le comportement explicitement.
Écriture
Les attributs suivants spécifient si une propriété possède un accesseur de jeu associé. Ils sont mutuellement exclusifs.
-
readwrite indique que la propriété doit être traitée en lecture / écriture. Cet attribut est la valeur par défaut. Les méthodes getter et setter sont synthétisées automatiquement.
-
readonly indique que la propriété est en lecture seule. Seule une méthode getter est synthétisée. Si vous implémentez vos propres accesseurs, seule une méthode getter est requise. Si vous tentez d'attribuer une valeur en utilisant la syntaxe dot, vous obtenez une erreur de compilation.
Noms des méthodes d'accesseur
Vous vous rappellerez que les noms par défaut des méthodes getter et setter associées à une propriété sont respectivement PropertyName et setPropertyName:. Par exemple, pour le trajet de propriété, les accesseurs sont trip et setTrip:. Vous pouvez cependant spécifier des noms personnalisés à la place. Ils sont tous deux optionnels et peuvent apparaître avec n'importe quel autre attribut (à l'exception de readonly et dans le cas de setter =):
-
setter = setterName spécifie le nom de l'accesseur set pour la propriété. La méthode setter doit prendre un seul paramètre d'un type correspondant au type de la propriété et doit renvoyer void.
-
En règle générale, vous devez spécifier les noms de méthodes d'accesseur compatibles avec le codage de valeur-clé. Une raison courante pour utiliser le décorateur getter est d'adhérer à la convention isPropertyName pour les valeurs booléennes.
Si vous avez une propriété booléenne appelée alphabetisée que vous utilisez pour suivre la façon dont un tableau de noms est trié, le getter par défaut serait alphabétisé. En utilisant la convention de nommage, vous créez une méthode d'accesseur appelée isAlphabetized, qui est un peu plus claire.
Atomicité
Vous pouvez utiliser cet attribut pour spécifier que les méthodes d'accès ne sont pas atomiques. (Aucun mot-clé ne signifie atomique.) Cela a à voir avec les problèmes de concurrence. Si vous spécifiez nonatomic, un accesseur synthétisé pour une propriété d'objet renvoie simplement la valeur directement. Sinon, un accesseur get synthétisé pour une propriété d'objet utilise un verrou et conserve et libère automatiquement la valeur renvoyée.
