iPhone - 在不导入头文件的情况下符合协议?

时间:2012-01-17 20:03:31

标签: iphone objective-c import

最近我下载了open source project zbar,项目本身与我的问题无关,我仍然无法弄清楚他的视图控制器是如何做到的:

//
//  EmbedReaderViewController.h
//  EmbedReader
//
//  Created by spadix on 5/2/11.
//

#import <UIKit/UIKit.h>

@interface EmbedReaderViewController
    : UIViewController
    < ZBarReaderViewDelegate >
{
    ZBarReaderView *readerView;
    UITextView *resultText;
    ZBarCameraSimulator *cameraSim;
}

@property (nonatomic, retain) IBOutlet ZBarReaderView *readerView;
@property (nonatomic, retain) IBOutlet UITextView *resultText;

@end

就是这样,就是整个文件,他怎么能看到委托和ZBarReaderView和ZBarCameraSimulator,而不导入任何东西???。

我的实现正在运行,但我当然要导入文件,正如我在看这个例子时,它确实引起了我的注意,他没有导入任何东西......这怎么可能?

2 个答案:

答案 0 :(得分:7)

项目中通常有一个pch文件(预编译/前缀头);此文件自动包含在项目的每个其他代码文件中。如果pch文件包含协议文件的#import,那么项目中的每个文件都会知道它。

答案 1 :(得分:2)

他必须在前缀头文件中有前向声明或导入,前缀头文件是项目中以.pch结尾的文件,该文件由项目中的所有源文件自动导入。