В С# я могу использовать следующий код для кода, который выполняется только во время сборки отладки, как я могу сделать то же самое в Xcode?
if #DEBUG
{
// etc etc
}
Ответ 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 намного компактнее: