2012-06-02 36 views
0

聽說.pch有利於把宏和常量的定義,所以它的默認內容:如何將宏和常量放入iOS項目的.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

+1

你的方式是正確的,看看這個問題http://stackoverflow.com/questions/2845211/iphone-prefix-pch-best-practices – self

回答

2

預編譯頭文件是爲了提高整體編譯項目的時間,所以預編譯頭的設計完全是由性能問題的推動。 預編譯頭文件的用例相對簡單:當項目中幾乎每個源文件都包含一組公共的頭文件時,我們將該頭文件包預編譯爲一個預編譯頭文件(PCH文件)。

.pch文件允許您導入像UIKit.h和Foundation.h這樣的文件(而不是在項目的每個.h中導入它們)如果您在.pch中導入了這些文件,請在您自己的類中不需要導入它們。

的#ifdef的意義OBJC是這樣,你不導入包含Objective-C代碼頭文件,如果你沒有編譯器設置爲建立客觀的C代碼(從而避免大量的編譯器錯誤的)。

1

任何額外進口我通常會與:

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

你是對的,沒有必要再導入其中一個,但這樣做沒有任何傷害。

相關問題