在类和appDelegate中的同一个类中导入appDelegate的后果

时间:2010-07-09 13:54:09

标签: iphone cocoa-touch header uiapplicationdelegate

我想知道在appDelegate中的类和同一个类中导入appDelegate的后果。因为,我在我的应用程序中成功完成了这项工作,但建议不要这样做。尽管经过了大量的搜索,我找不到答案。

提前致谢。

1 个答案:

答案 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文件,可以防止出现这种情况。