Конфигурация сборки iPhone Включение функций - PullRequest
5 голосов
/ 10 июля 2009

Вопрос о лучших практиках.

Есть ли способ программно определить, компилируется ли приложение для конфигурации AdHoc, и, если да, включить функцию в приложении?

Например, я думаю о включении переключения между средой beta и prod в зависимости от того, является ли приложение конфигурацией AdHoc vs. Release.

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

Может сделать это с помощью #define, но подумал, что я бы спросил, есть ли более элегантный способ сделать это путем определения текущей конфигурации.

Ответы [ 2 ]

7 голосов
/ 10 июля 2009

Вы можете установить пользовательское определение в вашей конфигурации, используя настройку Preprocessor Macros в вашем проекте или целевой информации. Это работает так же, как если бы в вашем источнике была #define переменная.

В конфигурации выпуска установите для GCC_PREPROCESSOR_DEFINITIONS («Макросы препроцессора») значение MYAPP_RELEASE=1. Затем вы можете использовать этот код для изменения функциональности во время компиляции:

#ifdef MYAPP_RELEASE
    NSString *title = @"Release Version";
#else
    NSString *title = @"Beta Version";
#endif
0 голосов
/ 10 июля 2009

Вы также можете иметь другой ключ plist для конфигураций, а затем читать приложение из файла .plist во время выполнения, например ...

CFBundleRef mainBundle;
CFDictionaryRef bundleInfoDict;
mainBundle = CFBundleGetMainBundle();
bundleInfoDict = CFBundleGetInfoDictionary(mainBundle);

if (bundleInfoDict != NULL) {
  // check for your custom config key here
}
...