如何获得OS X系统版本?

时间:2009-05-20 02:35:12

标签: cocoa macos

我想获得OS X系统版本,例如:10.5.4,10.4.8等。我想在我的应用程序中获取它,我该怎么做?谢谢!

8 个答案:

答案 0 :(得分: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也会这样做。

答案 1 :(得分: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];
}

答案 2 :(得分:11)

您可以使用Gestalt:

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

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

请记住,如果您正在检查方法是否可用,最好直接使用respondsToSelector进行测试:。

答案 3 :(得分:10)

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

答案 4 :(得分:7)

同样,您可以使用Gestalt。查看文档以获取更多信息;具体来说,您需要在Gestalt Manager Reference documentation

的“系统版本常量”部分中传递gestaltSystemVersionMajorgestaltSystemVersionMinorgestaltSystemVersionBugFix常量

答案 5 :(得分:0)

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

答案 6 :(得分:0)

使用此方法将返回Mac OS X版本

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

答案 7 :(得分:0)

还有一个围绕Gestalt调用的Cocoa包装器,其他人在Google Toolbox for Mac中提到过: http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/GTMSystemVersion.h