Как setenv (установить переменную окружения) с помощью файла nib (xib) mainmenu в программировании Какао или Xcode? - PullRequest
2 голосов
/ 24 декабря 2011

Я новичок в программировании Какао и Xcode. Мне интересно, как я могу setenv (или установить переменную окружения), используя файл MainMenu.nib (или .xib). У меня есть чей-то код в основной функции, как это:

[NSApplication sharedApplication];
[NSBundle loadNibNamed:@"MainMenu" owner: NSApp];

После второй строки он может получить переменную окружения:

if (!getenv("R_HOME")) {
    fprintf(stderr, "R_HOME is not set.\n");
    return -1;
}

Я хочу знать, как можно создать файл nib (или xib), например MainMenu.xib, в последней версии Xcode 3, чтобы его можно было использовать для setenv. Одна вещь, которую я сделал, это закодировал setenv без использования nib-файла:

setenv("R_HOME", "/Library/Frameworks/R.framework/Resources", 1)

Но это не сработало, когда я выполнил программирование GUI Cocoa, дважды щелкнув xxx.app, хотя это сработало, когда я запустил версию командной строки программы. Таким образом, мне кажется, что мне нужен способ установить переменные среды при запуске приложения Mac GUI. Я видел другие способы установки переменных среды, но я хочу знать, как можно устанавливать переменные среды, используя файлы nib (или xib), и загружая их, используя метод loadNibNamed от NSBundle.

Ответы [ 3 ]

2 голосов
/ 24 декабря 2011

Я хочу знать, как можно создать файл nib (или xib), например MainMenu.xib, в последней версии Xcode 3, чтобы его можно было использовать для setenv.

Nib-файлы не имеют ничего общего с переменными окружения.Они не содержат никакого кода и не оказывают никакого влияния на программу, кроме предоставления данных, используемых для создания экземпляров классов, предоставляемых кодом приложения.Я полагаю, что вы могли бы написать класс, который устанавливает переменные среды, а затем использовать перо для создания экземпляра этого класса, но не было бы никакой разницы между выполнением этого и простым созданием экземпляра класса в вашем коде.

OneЯ просто запрограммировал setenv без использования nib-файла: ... Но это не сработало, когда я запустил программирование GUI Cocoa, дважды щелкнув xxx.app, хотя это сработало, когда я выполнил версию командной строки программы.

Откуда ты знаешь, что это не сработало?Вы вызываете getenv (), чтобы проверить значение R_HOME в своем коде, или вы используете команду типа env в терминале?Если последнее, вы не смотрите на ту же среду, в которой была установлена ​​переменная.

Итак, мне кажется, мне нужен способ установки переменных среды при запуске приложения Mac с графическим интерфейсом.

Чего вы пытаетесь достичь?Кажется маловероятным, что вы устанавливаете переменную среды для использования вашей собственной программой - она ​​уже знает это значение, поэтому выход из среды кажется бессмысленным.Вы пытаетесь установить связь с другой программой?

Я видел другие способы установки переменных среды, но я хочу знать, как можно устанавливать переменные среды, используя файлы nib (или xib) и загружаяон использует метод loadNibNamed от NSBundle.

Опять же, нет никакого пересечения между nib-файлами и переменными окружения.Если вы хотите иметь возможность изменять поведение вашего приложения на основе какой-либо внешней переменной, вы можете установить переменные среды в файле .login, и эти значения должны быть доступны для чтения вашему приложению.Возможно, лучшим решением было бы использование системы значений по умолчанию - ваше приложение может считывать и записывать значения в системе значений по умолчанию через NSUserDefaults, и вы можете читать и записывать эти же значения в командной строке с помощью команды defaults.

2 голосов
/ 24 декабря 2011

Переменные среды обычно устанавливаются вместе с параметрами в ваших схемах.

В меню «Продукт» выберите «Редактировать схему» и выберите желаемую цель.Теперь с правой стороны выберите вкладку «Аргументы».

На вкладке «Аргументы» вы можете установить параметры командной строки и переменные среды, которые будут передаваться в работающее приложение.

0 голосов
/ 25 декабря 2011

Чтобы установить переменные среды в вашем распространяемом приложении, чтобы они были установлены даже для пользователей (Xcode влияет только на ваши отладочные прогоны), установите свойство LSEnvironment в Info.plist вашего приложения.

...