Найти номер версии Mac OS X в задании c - PullRequest
12 голосов
/ 27 июня 2011

Как узнать номер версии Mac OS X (например, «10.6.7») из моего приложения Cocoa Objective-C?

Ответы [ 3 ]

25 голосов
/ 27 июня 2011
#import <CoreServices/CoreServices.h>

SInt32 major, minor, bugfix;
Gestalt(gestaltSystemVersionMajor, &major);
Gestalt(gestaltSystemVersionMinor, &minor);
Gestalt(gestaltSystemVersionBugFix, &bugfix);

NSString *systemVersion = [NSString stringWithFormat:@"%d.%d.%d",
    major, minor, bugfix];
18 голосов
/ 02 января 2013

Вы можете использовать ту же технику, что и код Apple ...

NSDictionary *systemVersionDictionary =
    [NSDictionary dictionaryWithContentsOfFile:
        @"/System/Library/CoreServices/SystemVersion.plist"];

NSString *systemVersion =
    [systemVersionDictionary objectForKey:@"ProductVersion"];

Apple делает именно это, чтобы заполнить номер версии для различных системных утилит в функции _CFCopySystemVersionDictionary здесь:

http://opensource.apple.com/source/CF/CF-744/CFUtilities.c

12 голосов
/ 09 июня 2015

Для OS X 10.10+ я думаю, что использование NSProcessInfo - это более простой и безопасный способ сделать это:

NSOperatingSystemVersion version = [[NSProcessInfo processInfo] operatingSystemVersion];
NSLog([NSString stringWithFormat:@"%ld.%ld.%ld", version.majorVersion, version.minorVersion, version.patchVersion]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...