我听说.pch
适合放置宏和常量定义,所以对于它的默认内容:
#import <Availability.h>
#ifndef __IPHONE_4_0
#warning "This project uses features only available in iOS SDK 4.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
定义应该放在哪里?奇怪的是,它似乎是导入UIKit.h
,但ViewController.h
也导入了同一个文件(我认为默认情况下所有文件都导入了.pch
?所以ViewController.h
不应该不需要再次导入UIKit.h
答案 0 :(得分:2)
预编译头文件旨在改善项目的整体编译时间,因此预编译头文件的设计完全由性能问题驱动。 预编译头文件的用例相对简单:当项目中几乎每个源文件中都包含一组通用头文件时,我们会将该头文件包预编译为单个预编译头文件(PCH文件)。
.pch文件允许您导入UIKit.h和Foundation.h等文件(而不是在项目的每个.h中导入它们)如果您在.pch中导入了这些文件,那么在您自己的类中需要导入它们。
#ifdef OBJC的重要性在于,如果没有将编译器设置为构建目标c代码(因此避免了大量编译器错误),则不要导入包含objective-c代码的头文件。
答案 1 :(得分:1)
我通常使用的任何额外进口商品:
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
你是对的,没有必要再次导入其中一个,但这样做没有坏处。