如何将宏和常量放入iOS项目中的.pch文件中?

时间:2012-06-02 07:52:09

标签: objective-c ios precompiled-headers

我听说.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

2 个答案:

答案 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

你是对的,没有必要再次导入其中一个,但这样做没有坏处。