iphone: получить пользовательскую переменную в настройках цели по коду - PullRequest
30 голосов
/ 23 июля 2010

Мой проект имеет несколько целей.У каждой цели есть свой Class файл для настройки вещей.Я хочу сохранить это Class имя в настройке цели (Info.plist или настройке здания цели).Так что я могу определить, какой класс мне нужно использовать в каждой цели, на основе этого параметра.

В соответствии с этим вопросом , я ставлю «переменную User Defined для конкретной цели» в каждомПостроение цели.

Но не знаете, как вернуть его в мой код?

Ответы [ 2 ]

66 голосов
/ 23 июля 2010

Поскольку файл Info.plist также предварительно обрабатывается, вы можете использовать этот подход:

Определите пользовательский параметр в настройках сборки, например, CLASS_NAME.И ключ к вашему Info.plist-файлу.Назовите ключ CLASS_NAME и установите значение ${CLASS_NAME}.

. Затем вы можете получить доступ к этому параметру:

NSString* className = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CLASS_NAME"];
9 голосов
/ 23 июля 2010

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

Вместо этого определите макрос препроцессора в переменной макроса препроцессора, например 'MYVAR = 5'.Вы можете получить доступ к этим макросам в своем коде, например:

#if MYVAR==5
    //Do something
#endif

Обратите внимание, что оценка этих выражений происходит во время сборки, а не во время выполнения.

Это очень типичное использование простоопределить макрос, не заботясь о значении.Например, определите «DEBUG = 1» в настройках сборки отладки и «RELEASE = 1» в настройках сборки релиза.

Затем вы можете протестировать, используя #ifdef или # ifndef

#ifdef DEBUG
    // Log
#endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...