2011-08-19 10 views
0

使用Xcode 4:2開發人員構建iOS應用程序,其中一個使用10.6.8,另一個使用10.7。在10.7中,NSURLConnectionDelegate接口是顯式的:它被定義並且可以被添加到接口聲明中。然而在10.6.8中,它沒有被定義,並且產生了編譯錯誤(NSURLConnectionDelegate:找不到協議聲明)。這個錯誤可以通過簡單地刪除聲明來解決。我正在尋找一個編譯器宏,該編譯器宏標識哪個OS版本的代碼正在構建,因此我可以修改代碼以與兩個OS版本兼容。喜歡的東西:哪些Xcode宏可以用來檢查編譯計算機的操作系統版本?

#if _CURRENT_OS_X_IS_10_7_OR_HIGHER 
@interface appDelegate : NSObject<UIApplicationDelegate, NSURLConnectionDelegate> { 
#else 
@interface appDelegate : NSObject<UIApplicationDelegate> { 
#endif 

回答

1

您應該能夠使用NSAppKitVersionNumber和/或NSFoundationVersionNumber17_0

編輯

當你編譯爲iOS,您將無法使用任何宏觀來自哪裏一個Mac OS框架。你唯一的機會就是Xcode/GCC預定義的宏。

您可以檢查它們:

gcc -arch i386 -dM -E - < /dev/null | sort 

這似乎有趣:

__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ 
+0

不幸的是那些沒有出現使用'#ifdef'報表的工作:這是一個'@ interface'聲明,所以它必須是編譯時,而不是運行時。 – Femi

+0

檢入NSApplication.h。您還爲每個版本獲得了宏。 – Macmade

+0

不幸的是,這似乎只是OSX:我的實際項目是一個iOS項目(iPhone應用程序),Foundation.framework樹中沒有'NSApplication.h'標頭。 – Femi

相關問題