2012-05-06 4 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'sなどを置くことは、あなたのプロジェクトの他の '.h'ファイルごとに指定するのではなく、もっと簡単に行うことができます。 – houbysoft

8

おそらく既にデフォルトで次のようになりますこれは、あなたのPrefix.pchファイルで宣言されますので、それはです:

#ifdef __OBJC__ 
    #import <Foundation/Foundation.h> 
    #import <UIKit/UIKit.h> 
#endif