56 votes

Que fait @class dans Objective-C?

Quelqu'un peut-il m'expliquer s'il vous plaît ce que fait la déclaration @class en termes objectifs et quels sont les cas dans lesquels nous devrions utiliser cette déclaration.

98voto

zoul Points 51637

C'est une déclaration anticipée. Essentiellement, il indique au compilateur qu'il y a une classe de ce nom. - Je l'utiliser dans l'interface déclarations:

@class Foo;
@interface Bar : NSObject {
    Foo *someFoo;
}
@end

Bien sûr, vous pouvez importer l'en-tête de Foo à la place:

#import "Foo.h"
@interface Bar : NSObject {
    Foo *someFoo;
}
@end

Mais si someFoo n'est pas exposés à des utilisateurs d' Bar, ils devraient importer un fichier d'en-tête supplémentaire qui est d'aucune utilité pour eux. Avec l' @class de la déclaration, les utilisateurs de l' Bar voir pas de supplément à l'importation, car Foo.h seront importées dans le fichier d'implémentation de Bar.

26voto

justin Points 72871

cela s'appelle une déclaration anticipée.

vous utilisez cette directive pour indiquer au compilateur qu'il existe une classe objc avec le nom spécifié. vos autres options consistent à inclure l'interface ou à utiliser id pour les variables ou les types.

c'est utile pour minimiser les dépendances. Je les utilise chaque fois que je peux pour minimiser les dépendances et réduire considérablement les temps de construction.

c'est la même chose que dans c et c ++:

 struct mon_struct;
namespace MON { class mon_class; }
 

10voto

user3767017 Points 1

espérons que cela aidera peu plus

La réponse ci-dessus, déjà presque toute chose , je voudrais ajouter quelque chose sur elle.

L' @class Foo est une déclaration anticipée de la classe Foo. C'est comme dire le compilateur, classe foo existe Donc ne vous inquiétez pas à ce sujet maintenant.

Remarque:- déclaration de Classe devient très critique quand les deux de la classe de besoin les uns des autres. si nous le faisons d'habitude instruction #import alors, nous aurions une boucle sans fin des importations et des Compilateurs n'aime pas les boucles sans fin. Donc, nous utilisons @class Classname.

1voto

Pawan Kumar Sharma Points 1426

@class est utilisé pour créer une déclaration en aval de toute classe. Si vous créez une classe dont l'implémentation vous est inconnue, vous pouvez le faire en utilisant la directive @class compilateur.

Vous pouvez implémenter cette classe lorsque l'implémentation vous est connue.

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