Подтвердить что ты не робот

Найдите номер версии Mac OS X в объективе c

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

4b9b3361

Ответ 1

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

Ответ 2

Вы можете использовать ту же технику, что использует код 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

Ответ 3

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

NSOperatingSystemVersion version = [[NSProcessInfo processInfo] operatingSystemVersion];
NSLog([NSString stringWithFormat:@"%ld.%ld.%ld", version.majorVersion, version.minorVersion, version.patchVersion]);

Ответ 4

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

if (@available(macOS 10.14, *)) {
    return [NSColor controlAccentColor];
} else {
    return [NSColor blueColor];
}