54 votes

Objective-C: Déclaration de classe à terme

J'écris une application à vues multiples qui utilise une classe appelée RootViewController pour basculer entre les vues.

Dans mon en-tête MyAppDelegate , je crée une instance de RootViewController appelée rootViewController . J'ai vu des exemples de situations dans lesquelles la directive @class est utilisée comme "déclaration de classe en aval", mais je ne suis pas tout à fait sûr de ce que cela signifie ou accomplit.

 #import <UIKit/UIKit.h>
@class RootViewController;
@interface MyAppDelegate
.
.
.
 

111voto

Mac Points 8532

Essentiellement, il indique au compilateur que la classe RootViewController existe, sans préciser de quoi elle ressemble (c'est à dire: ses méthodes, propriétés, etc). Vous pouvez l'utiliser pour écrire du code qui inclut RootViewController variables de membre sans avoir à inclure l'intégralité de la déclaration de classe.

Ceci est particulièrement utile dans la résolution des dépendances circulaires, permettant par exemple de dire ClassA a un membre de type ClassB*, et ClassB a un membre de type ClassA*. Vous devez disposer d' ClassB déclaré avant de pouvoir l'utiliser en ClassA, mais du même coup, vous avez besoin d' ClassA déclaré avant de pouvoir l'utiliser en ClassB. Avant les déclarations de vous permettre de surmonter cela en disant à l' ClassA que ClassB existe, sans avoir à spécifier ClassB's spécification complète.

EDIT: Une raison, vous avez tendance à trouver beaucoup de déclarations de certaines personnes à adopter une convention de déclarer des classes, sauf s'ils doivent absolument inclure l'intégralité de la déclaration. Je ne suis pas entièrement de rappel, mais peut-être que c'est quelque chose que Apple recommande, c'est l'Objective-C directrices de style de lignes directrices.

En continuant mon exemple ci-dessus, si vos déclarations d' ClassA et ClassB sont dans les fichiers ClassA.h et ClassB.h , respectivement, vous auriez besoin d' #import selon l'une pour l'utilisation de sa déclaration dans l'autre classe. À l'aide de l'avant de la déclaration signifie que vous n'avez pas besoin de l' #import, ce qui rend le code plus jolie (en particulier une fois que vous commencez la collecte de quelques classes, dont chacune aurait besoin d'un " #import où il est utilisé), et augmente la compilation de la performance en minimisant la quantité de code que le compilateur a besoin de prendre en compte lors de la compilation d'un fichier donné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X