Vous pouvez le faire, mais attention à la façon dont vous importez en-têtes. Ceci est la méthode recommandée:
AppDelegate.h:
// Import headers here
@class MyViewController;
@interface AppDelegate : NSObject <UIApplicationDelegate> {
MyViewController *viewController;
}
- (void)someMethod;
@end
AppDelegate.m:
#import "AppDelegate.h"
#import "MyViewController.h"
@implementation AppDelegate
//Your code here
@end
MyViewController.h:
// Import headers here
@class AppDelegate;
@interface MyViewController : UIViewController {
AppDelegate *appDelegate;
}
@end
MyViewController.m:
#import "MyViewController.h"
#import "AppDelegate.h"
@implementation MyViewController
// Your code here
@end
Comme vous pouvez le voir, vous voulez utiliser @class
de déclarer les classes dans vos têtes, puis importer l'en-tête dans vos .m
fichiers. Cela garantit que vous n'importez pas les choses dont vous n'avez pas besoin; Si vous avez importé l'en-tête du contrôleur de vue dans l'en-tête de votre délégué d'application, il est importé dans tout ce qui a importé l'en-tête de votre délégué d'application. En laissant toutes les importations aux fichiers .m
, vous évitez cette situation.
... Thanx Exactement ce que je cherchais .. Est-ce le cas même avec toute importation de classe dans les autres classes et vice-versa? – neha
Oui. Vous ne voulez inclure d'autres fichiers d'en-tête dans les fichiers d'en-tête que lorsque c'est absolument nécessaire. Cela aidera à réduire la taille des fichiers (les choses inutiles ne seront pas compilées dans chaque fichier) et améliorera les performances, tout en évitant les erreurs. –