Проверка версии OS X в Какао

Я разрабатываю приложение Какао и потребность проверить, является ли текущей версией OS X OS X 10,6 Snow Leopard

Если текущая версия является Snow Leopard, я должен закрыть приложение с ошибочным предупреждением.

Как я могу найти текущую версию OS X?

5
задан pkamb 1 April 2015 в 00:11
поделиться

4 ответа

appdomain.currentdomain.SetData («app_config_file», @configfile);

-121--3255702-

Соответствующая документация Apple можно найти в с использованием разработки на основе SDK : , определяющая версию структуры .

Они предлагают либо тестирование существования определенного класса или способа или для проверки номера структуры версии, например, NSappkitversionNumber или NSFoundationVersionNumber . Соответствующие рамки также объявляют ряд констант для разных версий ОС ( констант NSApplication , Константы фундамента ).

Соответствующий код может быть таким же простым, как:

if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_5) {
    // Code for 10.6+ goes here
}
9
ответ дан 18 December 2019 в 09:07
поделиться

Есть пара способов, которыми вы могли бы сделать это.

  1. Вы могли бы проверить наличие всего 10,6 класса:

     класс SnowleoPardonlyClass = NSClassFromString (@ «NsrunningApplication»);
    Если (SnowleopardonlyClass! = Nil) {
      NSLog (@ "Я бегу на снежный леопард!");
     } 
  2. Используйте системную функцию (вроде GESTALT ) для определения версии ОС:

     #IMPORT 
    Sint32 Major = 0;
    Sint32 Minor = 0;
    Гештальт (GestaltsystemversionMajor, & Major);
    GESTALT (GestaltsystemversionMinor & Minor);
    Если ((((Major == 10 && Minor> = 6) || Майор> = 11) {
      NSLog (@ "Я бегу на снежном леопарде (по крайней мере!)");
     } 
7
ответ дан 18 December 2019 в 09:07
поделиться

на системах Unix можно использовать uname (3) системный вызов. См.

$ man 3 uname

Пример:

#include <stdio.h>
#include <sys/utsname.h>

int main()
{
    struct utsname un;

    uname(&un);
    printf("sysname: %s\nnodename: %s\nrelease: %s\nversion: %s\nmachine: %s\n",
        un.sysname, un.nodename, un.release, un.version, un.machine);
}

на Mac OS X 10.8.5 Я получаю «9.8,0» в качестве номера выпуска. См. Список выпусков . 10.0 - Mac OS X 10.6, 10.2.0 - Mac OS X 10.6.2.

1
ответ дан 18 December 2019 в 09:07
поделиться

Отвечая самому себе, реализовывайте предупреждение в главном меню. m следующим образом :

#ifndef NSAppKitVersionNumber10_5
#define NSAppKitVersionNumber10_5 949
#endif 
int main(int argc, char *argv[])
{
    SInt32 major = 0;
    SInt32 minor = 0;   
    Gestalt(gestaltSystemVersionMajor, &major);
    Gestalt(gestaltSystemVersionMinor, &minor);
    if ((major == 10 && minor >= 6) || major >= 11) {

        CFUserNotificationDisplayNotice(0, kCFUserNotificationCautionAlertLevel,NULL, NULL, NULL, CFSTR("Maestro"), CFSTR("This version is not compatible."),  CFSTR("Ok"));
        return 0;
    }
    return NSApplicationMain(argc,  (const char **) argv);
}
0
ответ дан 18 December 2019 в 09:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: