В С# я могу использовать следующий код для кода, который выполняется только во время сборки отладки, как я могу сделать то же самое в Xcode?
if #DEBUG
{
// etc etc
}
В С# я могу использовать следующий код для кода, который выполняется только во время сборки отладки, как я могу сделать то же самое в Xcode?
if #DEBUG
{
// etc etc
}
Символ NDEBUG должен быть определен для вас уже в режиме освобождения
#ifndef NDEBUG
/* Debug only code */
#endif
Используя NDEBUG, вы просто не должны указывать аргумент -D DEBUG самому компилятору для отладочных построек
Вы можете использовать
#ifdef DEBUG
....
#endif
Вам нужно добавить DEBUG=1
в определения символа препроцессора проекта в настройках конфигурации отладки, которые не выполняются автоматически с помощью Xcode.
Я лично предпочитаю делать DEBUG=1
над проверкой на NDEBUG=0
, так как последнее подразумевает, что конфигурация сборки по умолчанию имеет отладочную информацию, которую вы затем должны явно отключить, тогда как "DEBUG = 1" подразумевает включение только отладки код.
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;
Существует очень полезная технология отладки: Техническая нота TN2124 Mac OS X Отладка Magic http://developer.apple.com/technotes/tn2004/tn2124.html#SECENV, который содержит много полезного материала для отладки ваших приложений.
Тони