我想知道在appDelegate中的类和同一个类中导入appDelegate的后果。因为,我在我的应用程序中成功完成了这项工作,但建议不要这样做。尽管经过了大量的搜索,我找不到答案。
提前致谢。
答案 0 :(得分:6)
您可以这样做,但要小心导入标头的方式。这是推荐的方式:
<强> 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
如您所见,您希望使用@class
在标头中声明类,然后在.m
文件中导入标头。这可以确保您不会导入不需要的东西;如果您在应用程序委托的标题中导入了视图控制器标题,则会将其导入到导入应用程序委托标题的任何内容中。通过将所有导入保留到.m
文件,可以防止出现这种情况。