2012-05-06 26 views
4

我一直在觀看一段視頻,指出UIAlertView只有在導入了UIKit.h的情況下才有效。不過,如果我註釋掉頭文件中的import語句:爲什麼在刪除UIKit.h的導入後可以參考UIKit類?

//#import <UIKit/UIKit.h> 
@interface ViewController : UIViewController 
@end 

當我把它添加到實現文件的警報仍然有效:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
[alert show]; 
} 

請解釋爲什麼這個工作? UIKit的真正作用是什麼?

回答

3

UIKit.h只是所在班等被定義的文件。

沒有它,編譯器將不知道UIAlertView是什麼。

但是,就你的情況而言,它可能會起作用,因爲#import <UIKit/UIKit.h>通常包含在項目的前綴文件中,默認情況下,它包含在源文件中。

+0

這很有道理,但爲什麼#import 語句包含頭文件。看起來多餘。 – SimonRH

+0

@ user1209902:我猜這有點,這取決於你如何使用它。純粹是出於方便的原因;在前綴文件中放入一個'#import'或各種'#ifdef'等,而不必在項目中的其他'.h'文件中指定它們會更容易... – houbysoft

8

這是因爲它可能已經在你的Prefix.pch文件,在默認情況下看起來是這樣的聲明:

#ifdef __OBJC__ 
    #import <Foundation/Foundation.h> 
    #import <UIKit/UIKit.h> 
#endif 
相關問題