2010-09-11 3 views

ответ

2

Короткий ответ на ваш вопрос: Используйте Base SDK версии по крайней мере 4.0 для вашего приложения и развертывания целевой версии в точности 4.0.

Я отклонил оба ответа, потому что они неправы или, по крайней мере, неполные.

При создании приложений есть два параметра, которые вы должны знать:

Там является Base SDK Version, которая определяет против какой версии SDK приложение будет компилироваться.

Существует также Deployment Target Version, который определяет версию прошивки, что ваше приложение требует в низкого. Вы можете установить это как 2,1 в Xcode, но App Store не будет принимать версии ниже, чем 3.1.3 на данный момент.

The Base SDK версии может быть выше тогда развертывания Target Version. Это просто означает, что ваше приложение обратно совместимо со старой версией iOS. Это также означает, что ваше приложение должно принимать решения во время выполнения, чтобы не использовать более новые функции при работе в старой версии.

Например, MFMessageComposeViewController был добавлен в версию 4.0, поэтому, если ваше приложение настроено так же, как и на 3.1.3, тогда вы должны использовать NSClassFromString(), чтобы узнать, действительно ли этот конкретный класс доступен, прежде чем использовать его.

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

+0

Вы правы относительно целевой версии развертывания, я полностью пропустил это – rano

+0

Спасибо, это то, что я искал. –

-2

В зависимости от API, которые вы будете использовать. Предположим, вы хотите внедрить текстовые сообщения в приложении (MFMessageComposeViewController) и хотите, чтобы ВСЕ ваши конечные пользователи (будут определены как EU), чтобы получить доступ к этой функции, вам придется скомпилировать ее с iOS 4.0. Но предположим, что вы хотите, чтобы текстовые сообщения в приложении были дополнительными и «плюс» для ваших EU, вы просто скомпилируете свое приложение против iOS 3.0 (скажем).

Надеюсь, что я ответил на ваш вопрос :-)

0

И несколько важного замечание:

Поведения делает изменений по выпускам ОС. Были куча изменений в 3.0 (у нас были проблемы с UITableView/UITableViewCell):

  • Некоторые изменения произошли на старых приложениях (например, скомпилированные для 2.2.1). Я забыл, что это такое.
  • Некоторые из них были в наборе инструментов (я думаю, они изменили, как наконечники были скомпилированы с помощью ibtool, что-то вроде настройки как изображения, так и пользовательского представления для UITableViewCell).Это произошло, когда мы обновили SDK на сервере сборки, даже если мы не коснулись «Base SDK»
  • Некоторые из них происходят только при компиляции с базовым SDK 3.0 (UIKit автоматически определяет, какую версию вы связали противы и имеют режимы обратной совместимости для некоторых вещей)

Кроме того, были некоторые выполнения/изменения C++ в GCC 4.2, что означает приложение GCC 4.2 работает на OS 2.2.1 разбились при заливке без знака Int/долго float/double или с помощью std :: ostringstream. С тех пор я добавил проверку на версию GCC.

Так нет, компиляции с новой SDK может результат в вопросах — вы не можете рисковать, если есть ограничения по времени (у вас нет времени, чтобы реализовать многозадачность, или у вас нет времени сделать полный повторный тест и исправить все ошибки или так далее). Или, может быть, вы по-прежнему хотите поддерживать 2.2.1 по какой-то странной причине (4.0-разрядная поддержка «2.x»), что фактически не позволяет отлаживать приложения на устройствах 2.x).

Обычно ничего не ломается по второстепенным выпускам ОС (дисконтирование 3.1/3.2). Я рекомендую обновлять SDK, как только у вас будет время; не уклоняйтесь от новых функций только потому, что у старых ОС их нет.

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