Как получить версию операционной системы OS X?

Я хочу получить версию операционной системы OS X, например: 10.5.4, 10.4.8 и т.д. Я хочу получить его в своем приложении, как мне это сделать? Спасибо!

Ответ 1

Вы можете прочитать список свойств в "/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 будет делать то же самое.

Ответ 2

Вы можете использовать Gestalt:

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

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

Имейте в виду, если вы проверяете, доступен ли метод или нет, лучше проверить это непосредственно с помощью responsesToSelector:.

Ответ 3

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

Ответ 4

-[NSProcessInfo operatingSystemVersionString] является читабельным и локализованным человеком. Подходит для отображения пользователю или использования в сообщениях об ошибках и т.д., Но не подходит для синтаксического анализа.

Ответ 5

Опять же, вы можете использовать Гештальт. Посмотрите документацию для получения дополнительной информации; в частности, вы захотите передать константы gestaltSystemVersionMajor, gestaltSystemVersionMinor и gestaltSystemVersionBugFix в разделе "Константы системных версий" Справочник менеджера Gestalt документация

Ответ 7

используйте этот метод, он вернет версию Mac OS X

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

Ответ 8

После 10_10, 8_0 были представлены лучший и самый простой способ - [NSProcessInfo processInfo].operatingSystemVersion
который вернется NSOperatingSystemVersion struct
со всеми тремя номерами.