如何获取OS X系统版本?
您可以使用格式塔:
SInt32 version = 0;
Gestalt(gestaltSystemVersion, &version);
BOOL leopard = (version >= 0x1050);
if (leopard)
{
//draw it this way
}
else
{
//draw it that way
}
请记住,如果你检查,如果一个方法是可用的,这是更好地测试使用直接:. respondsToSelector
请注意,由于1位数限制,自10.4开始支持gestaltSystemVersionMajor,gestaltSystemVersionMinor和gestaltSystemVersionBugFix,因此不鼓励使用gestaltSystemVersion。例如,10.4.10和.11不能使用您的代码进行检测。 – smorgan 2009-05-20 15:12:30
由于格式塔在10.8中已弃用,是否有另一种方法可以在10.6 - 10.8之间使用? – adib 2012-07-27 17:14:14
现在这个答案是错误的,因为gestaltSystemVersion不能代表10.10。 – 2014-06-07 15:31:25
再次,您可以使用格式塔。查看文档以获取更多信息;具体来说,您想通过gestaltSystemVersionMajor
,gestaltSystemVersionMinor
和gestaltSystemVersionBugFix
常数的Gestalt Manager Reference documentation
“系统版本常量”部分还有各地调用其他人在谷歌工具箱为Mac所提到的格式塔可可包装: http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/GTMSystemVersion.h
恩,看起来更麻烦,而不是简单的检查。也许如果我已经在使用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个数字。
@JakePetroules如果7年前被问及7年前伪原创 - 4年前,这一个可能是重复的!请看日期。 – 2016-08-16 17:35:05
因为另一个问题包含正确的答案作为接受的答案。这个包含所有错误或过时的答案,只有一个答案在底部。 Stack Overflow是人们寻找答案的wiki,而不是问题和答案的历史记录。 – 2016-08-16 17:47:03