2013-06-12 1 views
1

J'ai une catégorie que j'importer dans un .m ainsi:Est-ce que Xcode peut me dire si j'oublie d'inclure une implémentation de catégorie dans ma cible?

#import "UIView+Additions.h" 

Si j'oublie d'ajouter UIView+Additions.m à mon objectif, je ne saurai pas avant l'exécution lorsque l'exécution ne peut pas trouver mon sélecteur. Existe-t-il un moyen de savoir au moment de la compilation (ou probablement de l'heure du lien) que j'ai oublié d'inclure l'implémentation d'une catégorie?

Répondre

0

Cette macro fonctionne!

#ifndef HJBObjCCategory_h 
#define HJBObjCCategory_h 

#define HJBObjCCategoryInterface(c , n) \ 
\ 
extern int c##n##Canary; \ 
\ 
__attribute__((constructor)) static void c##n##CanaryCage() { \ 
    c##n##Canary = 0; \ 
} \ 
\ 
@interface c (n) 

#define HJBObjCCategoryImplementation(c , n) \ 
\ 
int c##n##Canary = 0; \ 
\ 
@implementation c (n) 

#endif 

utiliser comme ceci:

UIView + Additions.h

HJBObjCCategoryInterface(UIView, Additions) 

- (void)hjb_foo; 

@end 

UIView + Additions.m

HJBObjCCategoryImplementation(UIView, Additions) 

- (void)hjb_foo { 
    NSLog(@"foo!"); 
} 

@end 
Questions connexes