2009-05-20 129 views
14

我想獲得OS X系統版本,例如:10.5.4,10.4.8等我想在我的應用程序中獲得它,我該怎麼做?謝謝!如何獲取OS X系統版本?

+0

@JakePetroules如果7年前被問及7年前僞原創 - 4年前,這一個可能是重複的!請看日期。 – 2016-08-16 17:35:05

+0

因爲另一個問題包含正確的答案作爲接受的答案。這個包含所有錯誤或過時的答案,只有一個答案在底部。 Stack Overflow是人們尋找答案的wiki,而不是問題和答案的歷史記錄。 – 2016-08-16 17:47:03

回答

11

您可以使用格式塔:

SInt32 version = 0; 
Gestalt(gestaltSystemVersion, &version); 
BOOL leopard = (version >= 0x1050); 

if (leopard) 
{ 
    //draw it this way 
} 
else 
{ 
    //draw it that way 
} 

請記住,如果你檢查,如果一個方法是可用的,這是更好地測試使用直接:. respondsToSelector

+14

請注意,由於1位數限制,自10.4開始支持gestaltSystemVersionMajor,gestaltSystemVersionMinor和gestaltSystemVersionBugFix,因此不鼓勵使用gestaltSystemVersion。例如,10.4.10和.11不能使用您的代碼進行檢測。 – smorgan 2009-05-20 15:12:30

+5

由於格式塔在10.8中已棄用,是否有另一種方法可以在10.6 - 10.8之間使用? – adib 2012-07-27 17:14:14

+4

現在這個答案是錯誤的,因爲gestaltSystemVersion不能代表10.10。 – 2014-06-07 15:31:25

7

再次,您可以使用格式塔。查看文檔以獲取更多信息;具體來說,您想通過gestaltSystemVersionMajorgestaltSystemVersionMinorgestaltSystemVersionBugFix常數的Gestalt Manager Reference documentation

19

你可以閱讀在屬性列表「/System/Library/CoreServices/SystemVersion.plist並提取‘的ProductVersion’鍵,這是OS X安裝程序怎麼做呢?這裏有一個例子:

NSString *versionString; 
NSDictionary * sv = [NSDictionary dictionaryWithContentsOfFile:@"/System/Library/CoreServices/SystemVersion.plist"]; 
versionString = [sv objectForKey:@"ProductVersion"]; 

或者,命令swvers -productVersion也會這樣做。

11
NSString *osver() 
{ 
    SInt32 versionMajor=0, versionMinor=0, versionBugFix=0; 
    Gestalt(gestaltSystemVersionMajor, &versionMajor); 
    Gestalt(gestaltSystemVersionMinor, &versionMinor); 
    Gestalt(gestaltSystemVersionBugFix, &versionBugFix); 
    return [NSString stringWithFormat:@"%d.%d.%d", versionMajor, versionMinor, versionBugFix]; 
} 
9

-[NSProcessInfo operatingSystemVersionString]是人類可讀和本地化的。適合顯示給用戶或用於錯誤電子郵件等,但不適合解析。

0

使用這種方法會返回Mac OS X版本

+(SInt32) OSVersion; 
{ 
    SInt32 osxMinorVersion; 
    Gestalt(gestaltSystemVersionMinor, &osxMinorVersion); 
    return osxMinorVersion; 
} 
0

10_10後,8_0分別提出了更好的&簡單的方法是
[NSProcessInfo processInfo].operatingSystemVersion
將返回
NSOperatingSystemVersion結構
所有3個數字。