Пользовательские переменные времени компиляции для использования в коде Objective-C? - PullRequest
1 голос
/ 28 января 2011

Есть ли способ указать XCode вставлять определенные переменные или константы в ваш проект во время компиляции, чтобы вы могли использовать их в своем коде?В частности, я говорю о проектах iOS, поэтому у меня нет возможности использовать аргументы командной строки, я думаю.

Зачем мне это нужно, спросите вы?Хорошо, скажем, что для определенных ячеек в табличном представлении я хотел бы добавить другой текст субтитров, потому что это помогает мне выбрать правильную ячейку во время разработки.Примерно так было бы здорово:

if (MY_COMPILE_TIME_BOOL_CONST) {
    cell.subtitle.text = [NSString stringWithFormat:@"Contains %i items", count];
} else {
    cell.subtitle.text = @"";
}

Но есть много других мест, которые могут пригодиться.Каким-то образом, пытаясь найти ответ в Google, я получаю только «начало с учебников по XCode».

Может ли кто-нибудь указать на магию?

ОБНОВЛЕНИЕ: волшебное слово, для которого Google ищет слово «препроцессор»макро».Спасибо, ТАК!

Ответы [ 3 ]

3 голосов
/ 28 января 2011

Если вы запускаете свое приложение из XCode, вы можете полностью использовать аргументы командной строки.

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

#if DEBUG
NSLog(@"Foo");
#endif

Последний - это то, чем я пользуюсь каждый день.

2 голосов
/ 28 января 2011

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

В Xcode дважды щелкните target , выберите Configuration (Debug / Release / etc), в которой вы хотите указать свои специальные определения. Затем введите preprocessor" в поле поиска. Затем вы должны увидеть Макросы препроцессора , где вы можете ввести дополнительные .

0 голосов
/ 28 января 2011

как насчет:

#define DEBUG YES

в вашем .pch

, тогда вы можете сделать что-то вроде

if (DEBUG) {
   cell.subtitle.text = @"Counting xyz";
   return cell;
}

cell.subtitle.text = @"";
return cell;

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

...