Chcę poznać konsekwencje importowaniaappDelegate w klasie i ta sama klasa w appDelegate. Ponieważ pomyślnie robię to w mojej aplikacji, ale zaleca się, aby tego nie robić. Nie mogłem znaleźć odpowiedzi pomimo wielu poszukiwań.
Z góry dziękuję.
Odpowiedzi:
6 dla odpowiedzi № 1Możesz to zrobić, ale zachowaj ostrożność podczas importowania nagłówków. To jest zalecany sposób:
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
Jak widać, chcesz użyć @class
aby zadeklarować klasy w swoich nagłówkach, a następnie zaimportuj nagłówek do pliku .m
akta.Gwarantuje to, że nie importujesz rzeczy, których nie potrzebujesz; jeśli zaimportowałeś nagłówek kontrolera widoku w nagłówku delegata aplikacji, zostanie zaimportowany do wszystkiego, co zaimportowało nagłówek delegata aplikacji. Pozostawiając wszystkie importy do .m
plików, zapobiegniesz tej sytuacji.