Подтвердить что ты не робот

Как объявить только оператор отладки

В С# я могу использовать следующий код для кода, который выполняется только во время сборки отладки, как я могу сделать то же самое в Xcode?

if #DEBUG
{
    // etc etc
}
4b9b3361

Ответ 1

Символ NDEBUG должен быть определен для вас уже в режиме освобождения

#ifndef NDEBUG
/* Debug only code */    
#endif 

Используя NDEBUG, вы просто не должны указывать аргумент -D DEBUG самому компилятору для отладочных построек

Ответ 2

Вы можете использовать

#ifdef DEBUG
    ....
#endif

Вам нужно добавить DEBUG=1 в определения символа препроцессора проекта в настройках конфигурации отладки, которые не выполняются автоматически с помощью Xcode.

Я лично предпочитаю делать DEBUG=1 над проверкой на NDEBUG=0, так как последнее подразумевает, что конфигурация сборки по умолчанию имеет отладочную информацию, которую вы затем должны явно отключить, тогда как "DEBUG = 1" подразумевает включение только отладки код.

Ответ 3

DEBUG теперь определяется в "режиме отладки" по умолчанию в Макросах Project/Preprocessor. Поэтому тестирование всегда работает, если у вас нет очень старого проекта.

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

#ifdef DEBUG
#define DEBUGMODE YES
#else
#define DEBUGMODE NO
#endif

Итак, тестирование значения DEBUGMODE намного компактнее:

if (DEBUGMODE) {
//do this
} else {
//do that
}

Мой любимый:

NSTimeInterval updateInterval = DEBUGMODE?60:3600; 

Ответ 4

Существует очень полезная технология отладки: Техническая нота TN2124 Mac OS X Отладка Magic http://developer.apple.com/technotes/tn2004/tn2124.html#SECENV, который содержит много полезного материала для отладки ваших приложений.

Тони