Как получить версию системы OS X? - PullRequest
14 голосов
/ 20 мая 2009

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

Ответы [ 8 ]

19 голосов
/ 21 мая 2009

Вы можете прочитать список свойств по адресу "/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 голосов
/ 11 января 2011
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];
}
11 голосов
/ 20 мая 2009

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

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

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

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

10 голосов
/ 11 сентября 2012

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

7 голосов
/ 20 мая 2009

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

0 голосов
/ 16 августа 2016

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

0 голосов
/ 31 мая 2013

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

+(SInt32) OSVersion;
{
    SInt32 osxMinorVersion;
    Gestalt(gestaltSystemVersionMinor, &osxMinorVersion);
    return osxMinorVersion;
} 
0 голосов
/ 20 мая 2009

Вокруг Гештальта также есть оболочка Какао, которую другие упоминали в Google Toolbox для Mac: http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/GTMSystemVersion.h

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...