время выполнения и проверка версии iPhone во время компиляции - PullRequest
8 голосов
/ 08 июля 2011

В чем разница между временем выполнения, например, [[UIDevice currentDevice] systemVersion], и временем компиляции, например, __IPHONE_OS_VERSION_MIN_REQUIRED проверкой? Когда вы должны один над другим?

Является ли __IPHONE_OS_VERSION_MIN_REQUIRED просто переменной, установленной в настройках сборки?

Я прочитал ответы на Как настроить таргетинг на конкретную версию iPhone? и другие связанные вопросы, перечисленные ниже.

Но я только что заметил, что __IPHONE_OS_VERSION_MIN_REQUIRED = 30200 при сборке и запуске на iPhone (4.3.1) с Xcode 4. Почему?

Когда вы отправляете ваш код в Apple, они компилируют его версию для каждой существующей версии iPhone, соответственно устанавливая __IPHONE_OS_VERSION_MIN_REQUIRED?

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

Смежные вопросы:

Ответы [ 3 ]

9 голосов
/ 08 июля 2011

__IPHONE_OS_VERSION_MIN_REQUIRED - это на самом деле просто параметр сборки, который вы можете использовать в препроцессоре для изменения кода перед компиляцией. Нет, Apple не компилирует ваш код для каждого iPhone. Они не могут, так как вы не даете им код. Вы можете использовать проверку времени компиляции, чтобы определить, например, нужно ли вам компилировать код для эмуляции новой функции в старых версиях ОС. Однако вы используете проверку версии во время выполнения, чтобы определить, следует ли использовать встроенную или эмулированную версию этой функции.

Например, iAds были добавлены в 4.0. В настоящее время вы поддерживаете 4.0 и более поздние версии, но планируете добавить поддержку для 3.2 в будущем. Вы создаете код для отображения других объявлений в более старых версиях, используя проверку во время выполнения, чтобы определить, следует ли использовать iAds или другое, но вы не хотите, чтобы это было в каких-либо выпусках, пока остальная часть приложения не будет готова для версии 3.2, поскольку сделайте ваше приложение больше. Вы используете проверку времени компиляции, чтобы препроцессор исключил этот код из ваших выпусков. Используя макрос минимальной версии, вы можете легко добавить код в свой выпуск, изменив настройку минимальной сборки версии.

4 голосов
/ 08 июля 2011

Да, __IPHONE_OS_VERSION_MIN_REQUIRED - это просто значение для «Целевого объекта iOS» в «Настройках сборки».Убедитесь, что выбрана правильная цель, а не проект.

И, __IPHONE_OS_VERSION_MAX_ALLOWED соответствует настройке сборки "Base SDK".

0 голосов
/ 22 июля 2015

Компиляция и время выполнения или слова программирования, которые будут использоваться разработчиком. Так что лучшим примером времени компиляции является время написания кода, например, импорт синтаксиса и объявление свойств и методов. А ARC - это программирование времени компиляции. И переход в RUNTime после написания кода разработчиком для запуска программы называется временем выполнения. В это время код будет скомпилирован и столкнется с ошибками во время выполнения, такими как сбой программ, и закроет неожиданное поведение программы, подобное этому.

Пожалуйста, найдите ниже URL для более подробной информации

http://pc.net/helpcenter/answers/compile_time_vs_runtime

...