2009-07-05 54 views
6

是否有單個預處理器令牌可用於在構建時檢測任何iPhone設備或模擬器?我目前正在使用:用於檢測iPhone平臺的內置預處理器令牌

#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED 
    // This is an iPhone build 
#endif 

這是推薦的方法還是有更好的方法?我希望宏是內置的,即由編譯器定義,而不是由我必須包含的SDK頭文件定義。

我並不擔心現在區分iPhone OS版本,但如果有一個Apple文檔頁面詳細說明了所有相關的宏,以及它們是什麼時候並且沒有定義,那麼我會很感激它的鏈接:到目前爲止,我的搜索已經不多。

謝謝!

回答

8

你要找的文件是TargetConditionals.h,它定義了所有你感興趣的宏你會發現它在SDK的每個版本,如爲2.2 SDK以下路徑:

/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.sdk/usr/include/TargetConditionals.h 
+0

謝謝,我還沒有開始意識到TargetConditionals.h存在於Mac OS X的軟件開發工具包,以及iPhone的軟件開發工具包。 – 2009-07-09 01:54:02

2

如果您的代碼可以在iPhone和桌面上運行,則可以使用TARGET_OS_IPHONE來確定目標操作系統是否爲任何版本的iPhone OS。還有TARGET_IPHONE_SIMULATOR,它只在應用程序正在爲模擬器構建時定義。它們仍然在頭文件中定義,但我希望這有助於!

13

this site我們發現,你需要TARGET_OS_IPHONE

#if TARGET_OS_IPHONE 
//Do iPhone stuff 
#else 
//Do Mac stuff 
#endif