Обнаруживать, если iPhone работает с сборкой Debug/Distribution во время выполнения

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

+5
источник поделиться
2 ответа

В "Сведения о проекте" для конфигурации отладки добавьте макрос препроцессора "DEBUG" (в разделе GCC 4.2 - Preprocessing).

В вашем коде вы можете использовать #ifdef, чтобы определить, определен ли DEBUG, если вы хотите, чтобы какой-либо код был включен или нет для отладочных сборников. Или вы даже можете установить переменную (я не могу себе представить, зачем вам это нужно):

#ifdef DEBUG
  BOOL isBuiltDebug = YES;
#else
  BOOL isBuiltDebug = NO;
#endif

EDIT: Ну, еще один способ - определить логическое значение в макропроцессоре препроцессора, то есть: "DEBUG_BUILD = 1" для конфигурации Debug и "DEBUG_BUILD = 0" для конфигурации Release. Затем вы можете использовать это значение в своем коде:

if (DEBUG_BUILD) {
   ....
}

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

+13
источник

Не задумываясь об определении настраиваемого макроса препроцессора, вы можете просто написать собственный метод, подобный этому:

+ (BOOL) isInDebugMode
{
    #ifndef __OPTIMIZE__   // Debug Mode
        return YES;
    #else
        return NO;
    #endif
}

Или просто напишите свой код внутри этих операторов:

    #ifndef __OPTIMIZE__   // Debug Mode
       // Your debug mode code
    #else
        // Your release mode code
    #endif

Параметр препроцессора __OPTIMIZE__, который автоматически устанавливается компилятором в отношении настроек вашего проекта, поэтому вам не нужно беспокоиться об этом.

+5
источник

Посмотрите другие вопросы по метке или Задайте вопрос