如何获取OS X系统版本?

问题描述:

我想获得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

您可以使用格式塔:

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

再次,您可以使用格式塔。查看文档以获取更多信息;具体来说,您想通过gestaltSystemVersionMajorgestaltSystemVersionMinorgestaltSystemVersionBugFix常数的Gestalt Manager Reference documentation

“系统版本常量”部分还有各地调用其他人在谷歌工具箱为Mac所提到的格式塔可可包装: http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/GTMSystemVersion.h

+0

恩,看起来更麻烦,而不是简单的检查。也许如果我已经在使用GTM,但只要检查`gestaltSystemVersionMinor`就简单多了。 – 2009-09-16 16:46:45

你可以阅读在属性列表“/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也会这样做。

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]; 
} 

-[NSProcessInfo operatingSystemVersionString]是人类可读和本地化的。适合显示给用户或用于错误电子邮件等,但不适合解析。

使用这种方法会返回Mac OS X版本

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

10_10后,8_0分别提出了更好的&简单的方法是
[NSProcessInfo processInfo].operatingSystemVersion
将返回
NSOperatingSystemVersion结构
所有3个数字。