Accueil Médias sociaux Comment utiliser les propriétés déclarées dans votre application iOS - les nuls

Comment utiliser les propriétés déclarées dans votre application iOS - les nuls

Table des matières:

Vidéo: Learning iOS: Create your own app with Objective-C! by Tianyu Liu 2025

Vidéo: Learning iOS: Create your own app with Objective-C! by Tianyu Liu 2025
Anonim

Bien que les propriétés et l'accès aux variables d'instance et les accesseurs soient souvent mélangés dans l'esprit de l'application iOS les programmeurs, assurez-vous que vous comprenez la nature unique des propriétés et comment elles fonctionnent vraiment.

Alors que méthodes concernent l'envoi de messages à des objets pour faire avancer les choses, propriétés concernent l'état des objets. Les cadres et autres objets se comportent en fonction de ce qu'ils trouvent dans leurs propriétés (vous pouvez donc modifier le comportement de l'objet en changeant une propriété).

Vous pouvez également vouloir en savoir plus sur l'état de l'objet, comme sa couleur, ou sur le contrôleur Root View d'une fenêtre.

Les contrôleurs de vue de votre application, qui servent de pont entre les vues et le modèle, doivent être en mesure de trouver l'objet modèle pour obtenir des données et leur envoyer des mises à jour. Tout cela est fait en utilisant des propriétés. Une propriété ressemble à ceci:

@property (strong, nonatomic) IBOutlet UIImageView * car;

Mais toutes les propriétés ne sont pas des points de vente. Si vous sélectionnez RTAppDelegate. h fichier dans l'inspecteur de projet, vous pouvez voir qu'il comprend une propriété:

@property (fort, nonatomic) Fenêtre UIWindow *;

Comme vous pouvez le voir, l'ordre des attributs (fort, non atomique contre nonatomique, fort) n'a pas d'importance.

Ce qui comprend une propriété déclarée

Une propriété déclarée a deux parties: sa déclaration et son implémentation.

La déclaration utilise le mot clé @property, suivi d'un ensemble d'attributs entre parenthèses facultatif, des informations de type et du nom de la propriété.

L'accès aux propriétés est implémenté par des méthodes accesseurs (bien que dans la classe qui déclare la propriété, la propriété soit directement accessible, comme le sont les variables d'instance). Vous pouvez écrire vos propres méthodes d'accès ou vous pouvez laisser le compilateur le faire pour vous.

Les noms par défaut pour les méthodes getter et setter associées à une propriété sont quel que soit ThePropertyNameIs pour le getter et setWhateverThePropertyNameIs: pour le setter. Dans le cas d'un déclenchement, la méthode getter est trip, et la méthode setter est setTrip:.

Pour accéder à la propriété de trajet dans appDelegate, vous devez utiliser

AppDelegate * appDelegate = [[UIApplication sharedApplication] delegate]; Trip * thisTrip = [appDelegate voyage];

ou pour définir cette propriété, utilisez

AppDelegate * appDelegate = [[UIApplication sharedApplication] delegate]; [appDelegate setTrip: newTrip];

délégué, en passant est une propriété UIApplication.

Avec la syntaxe à point

Objective-C fournit un opérateur point (.) Qui offre une alternative à la notation en crochet ([]) pour appeler les méthodes d'accès. Vous utilisez la syntaxe par points comme vous le feriez pour un élément de structure C:

Trip * thisTrip = appDelegate. voyage;

ou pour définir cette propriété, utilisez

appDelegate. trip = newTrip;

Cependant, lorsqu'elle est utilisée avec des objets, la syntaxe par points agit comme du «sucre syntaxique» - elle est transformée par le compilateur en un message accesseur. La syntaxe Dot n'obtient pas directement ou ne définit pas une variable d'instance. Les exemples de code qui l'utilisent sont l'équivalent exact de l'utilisation de la notation de parenthèse.

De nombreux programmeurs aiment la syntaxe à points car elle peut être plus lisible. il suffit de penser à ces situations de notation de parenthèse où vous accédez à une propriété qui est une propriété d'un autre objet (elle-même est une propriété d'un autre objet, et ainsi de suite).

Le vrai avantage de la syntaxe par points, cependant, est que le compilateur va générer une erreur lorsqu'il détecte une tentative d'écriture dans une propriété déclarée en lecture seule. C'est tellement mieux que d'avoir à se contenter d'une méthode non déclarée d'avertissement parce que vous avez invoqué une méthode de setter inexistante, avec l'application échouant par la suite à l'exécution.

Lorsque vous utilisez le compilateur pour créer des méthodes d'accès pour vous, le compilateur crée une variable d'instance du type que vous avez déclaré qu'il utilisera ensuite pour stocker et récupérer la valeur de propriété avec le nom de la propriété. Par exemple pour la propriété suivante:

@property (weak, nonatomic) IBOutlet UIImageView * car;

l'instruction

@synthesize car;

génère une variable d'instance avec le nom de voiture du type UIImage.

Cependant, si vous laissez le compilateur générer automatiquement une instruction @synthesize pour vous, il utilise en fait un nom de variable d'instance commençant par un caractère de soulignement, ainsi vous obtiendrez le code suivant généré en coulisses:

@ synthétiser voiture = _car;

Cela vous permet de faire la distinction entre le nom de la propriété (accédé par self.car) et le nom de la variable d'instance (accessible simplement par _car).

Apple vous recommande d'utiliser la référence de propriété (self.car) dans les méthodes normales, mais d'utiliser la variable _car dans les méthodes init. Cela s'applique uniquement au code dans un fichier. Le code ailleurs dans votre application accède à la propriété telle qu'elle est déclarée dans la section @interface du fichier. h.

Il n'y a aucun moyen que le code n'importe où dans l'application, sauf dans le. m fichier d'une classe peut accéder à la variable d'instance directement lorsque vous laissez le compilateur faire le travail. Et c'est une bonne chose de s'assurer que l'encapsulation est correctement fournie.

Écrire vos propres accesseurs

Vous n'avez pas besoin d'utiliser les accesseurs générés par le compilateur; et, parfois, il est même logique de les implémenter soi-même. Si vous implémentez vous-même les méthodes d'accesseur, vous devez vous assurer que votre approche correspond aux attributs que vous avez déclarés.

Par exemple, si vous avez beaucoup d'overhead pour créer un objet qui pourrait ne pas être utilisé, vous pouvez créer votre propre accesseur getter qui crée l'objet la première fois qu'il est accédé.De plus, écrire votre propre accesseur signifie que vous n'avez pas besoin d'avoir une variable d'instance associée à la propriété.

Vous pourriez, par exemple, avoir une propriété area sur un objet représentant un rectangle. Le getter pour la zone peut effectuer une longueur x largeur et ne jamais déranger avec une variable d'instance.

Accès aux variables d'instance avec accesseurs

Si vous n'utilisez pas self, vous accédez directement à la variable d'instance. Dans l'exemple suivant, la méthode set accessor pour _currentDestinationIndex n'est pas appelée:

_currentDestinationIndex = [[NSUserDefaults standardUserDefaults] objectForKey: CurrentDestinationKey];

Ce qui précède n'est pas la même chose que

soi. currentDestinationIndex = [[NSUserDefaults standardUserDefaults] objectForKey: CurrentDestinationKey];

Pour utiliser un accesseur, vous devez utiliser self.

Comment utiliser les propriétés déclarées dans votre application iOS - les nuls

Le choix des éditeurs

Comment détecter les atteintes à la sécurité sur vos fichiers journaux Web hébergés - dummies

Comment détecter les atteintes à la sécurité sur vos fichiers journaux Web hébergés - dummies

Grande question est toujours sur la sécurité. Comment pouvez-vous repérer les failles de sécurité hébergées sur le Web pour protéger votre site et garantir qu'il ne sera pas piraté? La réponse courte est la suivante: Vous ne pouvez pas. Tout est piratable avec suffisamment de temps, des cerveaux sournois et des ressources. Cependant, il y a des choses que vous pouvez faire pour vous protéger un peu. ...

Comment utiliser MySQL Workbench pour votre site Web - dummies

Comment utiliser MySQL Workbench pour votre site Web - dummies

Bien que phpMyAdmin et d'autres outils d'hébergement Web Pour gérer les bases de données, il est possible que vous ayez besoin de quelque chose de plus puissant. MySQL Workbench est une bonne source dans cette instance. MySQL Workbench est un outil de conception et d'administration de base de données gratuit créé par Oracle qui réunit deux produits: MySQL Query Browser et MySQL ...

Le choix des éditeurs

Comment mettre du texte sur un cercle dans QuarkXPress - texte fictif

Comment mettre du texte sur un cercle dans QuarkXPress - texte fictif

Sur un cercle - c'est-à-dire texte suivant l'extérieur d'un cercle ou ovale - est un élément de conception commun dans les mises en page. C'est vraiment facile à faire dans QuarkXPress, mais ce n'est pas du tout évident comment. Procédez comme suit: Obtenez l'outil Ovale de la palette Outils et dessinez ...

ÉChanges peer-to-peer par rapport aux échanges Bitcoin réguliers - mannequins

ÉChanges peer-to-peer par rapport aux échanges Bitcoin réguliers - mannequins

Deux types d'échanges de bitcoins sont utilisés : peer-to-peer et régulier. D'une part, il y a les échanges de bitcoins réguliers, qui utilisent un carnet de commandes pour faire correspondre les ordres d'achat et de vente entre les personnes. Cependant, ni l'acheteur ni le vendeur n'ont la moindre idée de l'identité de l'autre partie, ce qui permet à tous les utilisateurs ...

L'interface d'application QuarkXPress - les nuls

L'interface d'application QuarkXPress - les nuls

Les palettes visibles à gauche, à droite et en bas de QuarkXPress sont flottantes - vous pouvez les faire glisser n'importe où qui vous convient. Contrairement aux palettes, les menus de la barre de menu sont collés: vous devez toujours passer la souris à la barre de menu pour y accéder. Cependant, ...

Le choix des éditeurs

Sept erreurs d'optimisation de moteur de recherche - nuls

Sept erreurs d'optimisation de moteur de recherche - nuls

Lorsque vous essayez d'obtenir votre site Web, c'est facile de faire des erreurs d'optimisation de moteur de recherche. Voici quelques-unes des erreurs de référencement les plus courantes. Vous ne connaissez pas vos mots-clés C'est également un problème majeur: la grande majorité des sites sont créés sans que les propriétaires ou les développeurs du site ne sachent vraiment ce que sont les mots-clés ...

Soumission de pages aux moteurs de recherche pour l'optimisation - dummies

Soumission de pages aux moteurs de recherche pour l'optimisation - dummies

Vous avez probablement vu "soumission "Services annoncés pour le référencement, peut-être sous la forme de spam dans votre boîte de réception, offrant de soumettre votre site Web à des centaines de moteurs de recherche, encore et encore. Dans la plupart des cas, ces services de soumission sont une perte totale de temps et d'argent. Voici comment obtenir votre site Web dans les moteurs de recherche. You ...

Six mythes À propos de Search Engine Optimization - mannequins

Six mythes À propos de Search Engine Optimization - mannequins

Il existe une grande confusion dans le monde des moteurs de recherche. beaucoup de mythes. Voici quelques-uns des mythes communément crus qui peuvent nuire à vos positions de moteur de recherche. Tout est une question de métabalises et de soumissions. C'est le mythe le plus répandu et le plus préjudiciable de tous, tenu par de nombreux concepteurs et développeurs Web. ...