существует ли #define для какого активного SDK вы компилируете в iPhone SDK? - PullRequest
2 голосов
/ 19 ноября 2009

Я бы хотел во время компиляции сказать, собираюсь ли я для iPhone SDK 2.x или 3.x, поэтому я могу пропустить некоторые биты (например, MapKit, GameKit), если это будет необходимо. В настоящее время я делаю это с помощью пользовательского #define. Мне интересно, есть ли способ обнаружить это автоматически из активного SDK? Я знаю о TARGET_OS_IPHONE и TARGET_IPHONE_SIMULATOR и TargetConditionals.h, но не смог найти ничего, связанного с активным SDK.

Ответы [ 3 ]

3 голосов
/ 19 ноября 2009

Посмотрите на Availability.h (и AvailabilityInternal.h). Здесь определены __IPHONE_OS_VERSION_MIN_REQUIRED и константы для версии SDK.

1 голос
/ 10 августа 2012

Мартин прав: __IPHONE_OS_VERSION_MIN_REQUIRED - цель развертывания. Текущий базовый SDK - __IPHONE_OS_VERSION_MAX_REQUIRED.

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

0 голосов
/ 09 июля 2013

Если вы хотите проверить, используется ли конкретная (или более поздняя) версия SDK, есть некоторые определения, которые вы можете проверить.

Например, если у вас был какой-то код, который вы хотели компилировать только в случае использования SDK для iOS 6.0 или новее, вы можете использовать это:

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