Есть ли в iPhone эквивалент MAC_OS_X_VERSION_MIN_REQUIRED? - PullRequest
8 голосов
/ 28 марта 2009

Я хотел бы условно включить код для приложения для iPhone, в зависимости от того, какую версию SDK я собираю. В Mac OS X есть макрос препроцессора MAC_OS_X_VERSION_MIN_REQUIRED, который компилятором устанавливает значение сборки MACOSX_DEPLOYMENT_TARGET. Есть ли на iPhone аналог?

Обновление:

Я установил IPHONE_DEPLOYMENT_TARGET в 3.0 в настройках сборки, но XCode передает -D__IPHONE_OS_VERSION_MIN_REQUIRED=20000 и -mmacosx-version-min=10.5 в GCC. Не должен ли первый быть 30000, а второй -miphoneos-version-min=3.0? Что я делаю не так?

Обновление 2:

Похоже, я не делал ничего плохого. __IPHONE_OS_VERSION_MIN_REQUIRED и -miphoneos-version-min установлены правильно при сборке устройства - это неправильно только при использовании iPhone Simulator SDK. Я думаю, что это ошибка в симуляторе SDK.

Ответы [ 3 ]

12 голосов
/ 28 марта 2009
3 голосов
/ 28 марта 2009

Существуют макросы препроцессора, которые определены для каждой версии ОС. Например, если определено __IPHONE_OS_3_0, значит, вы используете SDK 3.0 (или, возможно, позже, я не уверен).

2 голосов
/ 28 марта 2009

Для того, чтобы это стоило, достойный обходной путь, если такого макроса не существует, состоит в том, чтобы создать 2 цели сборки и в одну из них добавить параметр сборки GCC_PREPROCESSOR_DEFINITIONS со значением, например IPHONE_OS_3. Тогда в своем коде вы можете сделать:

#ifdef IPHONE_OS_3
    [foo thisMethodIsUnderNDA];
#else
    [foo oldSchoolMethod];
#endif
...