Я разрабатываю приложение Какао и потребность проверить, является ли текущей версией OS X OS X 10,6 Snow Leopard
Если текущая версия является Snow Leopard, я должен закрыть приложение с ошибочным предупреждением.
Как я могу найти текущую версию OS X?
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
}
Есть пара способов, которыми вы могли бы сделать это.
Вы могли бы проверить наличие всего 10,6 класса:
класс SnowleoPardonlyClass = NSClassFromString (@ «NsrunningApplication»); Если (SnowleopardonlyClass! = Nil) { NSLog (@ "Я бегу на снежный леопард!"); }
Используйте системную функцию (вроде GESTALT
) для определения версии ОС:
#IMPORTSint32 Major = 0; Sint32 Minor = 0; Гештальт (GestaltsystemversionMajor, & Major); GESTALT (GestaltsystemversionMinor & Minor); Если ((((Major == 10 && Minor> = 6) || Майор> = 11) { NSLog (@ "Я бегу на снежном леопарде (по крайней мере!)"); }
на системах 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.
Отвечая самому себе, реализовывайте предупреждение в главном меню. 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);
}