#objective-c #debugging #conditional-compilation
#objective-c #отладка #условная компиляция
Вопрос:
я хочу задать вопрос о разработке с использованием директивы #ifdef.
Я хочу создать некоторый код на objective-c только для использования в отладке, например:
в основной функции сделайте это:
#define DEBUG_LEVEL
в моем интерфейсе сделайте это:
#ifdef DEBUG_LEVEL
BOOL editorIsDragged;
BOOL editorIsSelected;
#endif
…. другое свойство
#ifdef #DEBUG_LEVEL
@property (nonatomic, readwrite) BOOL editorIsDragged;
@property (nonatomic, readwrite) BOOL editorIsSelected;
#endif
затем в моей реализации сделайте это:
#ifdef #DEBUG_LEVEL
@synthetize editorIsDragged, editorIsSelected;
#endif
но я получаю ошибку, потому что в synthetize editorIsDragged
и editorIsSelected
не определены.
Если я пытаюсь определить свой собственный метод установки / получения, я получаю ту же ошибку, потому что мои переменные ( editorIsDragged
и editorIsSelected
) не существуют для XCode!
Я в C использую этот метод только для написания отладочного кода, но в obj-c что я должен использовать??
Спасибо!
Ответ №1:
Разве вы не должны поместить свой #define DEBUG_LEVEL в файл заголовка, который включается во все места, где это необходимо знать? Например, установить в настройках сборки или ввести *.pch. И я не уверен, что это опечатка, но у вас также есть #define #DEBUG_LEVEL (см. Второй хэш?) в приведенном здесь коде.
Комментарии:
1. Кроме того, NDBEUG (без отладки) — это стандартный макрос, используемый для такого рода вещей, хотя он может быть немного уродливым с двойными отрицательными условными обозначениями.