Последствия импорта appDelegate в класс и тот же класс в appDelegate - PullRequest
0 голосов
/ 09 июля 2010

Я хочу знать последствия импорта appDelegate в класс и тот же класс в appDelegate. Потому что я делаю это в моем приложении успешно, но рекомендуется не делать этого. Я не мог найти ответ, несмотря на большой поиск.

Заранее спасибо.

1 Ответ

6 голосов
/ 09 июля 2010

Вы можете сделать это, но будьте осторожны с тем, как вы импортируете заголовки.Это рекомендуемый способ:

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, вы предотвратите эту ситуацию.

...