2009-12-08 127 views

回答

6

我不確定您建議使用哪些宏。我一直以爲找到的版本號,這樣它會compatiable未來和以前版本的標準方法是使用

NSString* versionNumber = [[UIDevice currentDevice] systemVersion] 

這使得它作爲一個的NSString如@「2.0」或@「2.2。 1「

有版本常量描述正在使用的基礎類的版本,NSFoundationVersionNumber但我不確定這將在舊版和未來的代碼中有多可靠。

+0

打敗我回答:P要補充一點,他們最有可能參考的宏是預處理器宏(#define)。這不是它的工作方式,但我可以看到人們如何認爲版本將以這種方式定義。 – Jay 2009-12-08 02:19:54

+1

預處理器宏可讓您基於您定位的iPhone操作系統版本進行條件編譯,但無法檢測到應用程序正在運行的iPhone操作系統版本。舉個例子:#if __IPHONE_OS_VERSION_MIN_REQUIRED> = __IPHONE_2_0 – 2009-12-08 05:34:09

5

查找範圍Availability.h,具體的陳述:

#define __IPHONE_2_0  20000 
#define __IPHONE_2_1  20100 
#define __IPHONE_2_2  20200 
#define __IPHONE_3_0  30000 
#define __IPHONE_NA  99999 

而且不要忘記閱讀巨人頭註釋。 預處理器宏絕對是通過os版本來區分你的代碼的最安全的方法。

+0

我相信這些是爲iPhone應用程序編寫庫,但不適用於應用程序本身。但這可能是麥克風所暗指的。但我相當確定這是編譯而不是運行時版本檢測。 – 2009-12-08 03:49:25

+0

是的 - 它只是編譯時。 – CajunLuke 2009-12-08 12:16:33

+0

如果使用Twitter或雲服務的代碼,此方法非常有用。開發人員爲Mac OS和iPhone創建自己的「庫」。當涉及到用戶界面時,這個makros確實有幫助。非常感謝! – JackPearse 2011-03-03 14:13:12

相關問題