我听说.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 )
发布于 2012-06-02 16:39:03
预编译头旨在改善项目的整体编译时间,因此预编译头的设计完全是由性能问题驱动的。预编译头文件的用例相对简单:当项目中几乎每个源文件中都包含一组通用的头文件时,我们将该组头文件预编译成一个预编译头文件(PCH文件)。
.pch文件允许你导入像UIKit.h和Foundation.h这样的文件(而不是在项目的每个.h中导入它们),如果你已经在.pch中导入了这些文件,那么你自己的类中就不需要导入它们。
#ifdef OBJC的意义在于,如果您没有将编译器设置为构建objective C代码,则不会导入包含objective-c代码的头文件(从而避免了大量编译器错误)。
发布于 2012-06-02 16:31:10
我通常放入的任何额外的导入:
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif您是对的,不需要再次导入其中的一个,但这样做没有什么坏处。
https://stackoverflow.com/questions/10860724
复制相似问题