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

neh*_*eha 0 iphone cocoa-touch header uiapplicationdelegate

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

提前致谢.

Jef*_*ley 6

您可以这样做,但要小心导入标头的方式.这是推荐的方式:

AppDelegate.h:

// Import headers here

@class MyViewController;

@interface AppDelegate : NSObject <UIApplicationDelegate> {
    MyViewController *viewController;
}

- (void)someMethod;

@end
Run Code Online (Sandbox Code Playgroud)

AppDelegate.m:

#import "AppDelegate.h"
#import "MyViewController.h"

@implementation AppDelegate

//Your code here

@end
Run Code Online (Sandbox Code Playgroud)

MyViewController.h:

// Import headers here

@class AppDelegate;

@interface MyViewController : UIViewController {
    AppDelegate *appDelegate;
}

@end
Run Code Online (Sandbox Code Playgroud)

MyViewController.m:

#import "MyViewController.h"
#import "AppDelegate.h"

@implementation MyViewController

// Your code here

@end
Run Code Online (Sandbox Code Playgroud)

如您所见,您希望用于@class在标头中声明类,然后在.m文件中导入标头.这可以确保您不会导入不需要的东西; 如果您在应用程序委托的标题中导入了视图控制器标题,则会将其导入到导入应用程序委托标题的任何内容中.通过将所有导入保留到.m文件中,可以防止出现这种情况.