@class
est appelé une déclaration anticipée. Vous avez l'impression de dire au compilateur que la classe existe, mais rien sur la classe. Donc, il ne sait pas des trucs comme sa super-classe et quelles sont les méthodes qu'il déclare.
En règle générale, utilisez @class
dans la .h et #import
dans la .m, si possible. Comme Louis dit, il va aider à accélérer les temps de compilation. Il ya des moments où vous avez besoin d' #import
d'une classe dans l'en-tête, cependant. Cas je peux penser en ce moment sont:
- Vous êtes sous-classement d'une autre classe
- Vous êtes à la mise en œuvre d'un protocole
Dans ces cas, vous devez d' #import
le fichier d'en-tête où la classe ou le protocole est déclaré, parce que le compilateur a besoin de savoir toute la hiérarchie de classe de ses classes parentes et la mise en œuvre des protocoles.
FWIW, vous pouvez déclarer avant protocoles, trop, aussi longtemps que votre pas de les mettre en œuvre:
@protocol SomeProtocol;
@interface ...
- (id<SomeProtocol>)someMethod;
@end