Ответ 1
Да, вы можете построить с последним SDK (т.е.: 5.1) и все еще работать на устройствах с более ранними версиями прошивки (SDK).
- Задайте цель развертывания самой ранней версией, с которой вы хотите работать, например: 3.0.
- Вы устанавливаете базовый SDK в последнюю версию, которую вы компилируете, то есть: 5.0. Таким образом, вы можете ссылаться на новые определения и символы в вашем коде. В этой статье "SDK и цели развертывания" подробно обсуждается развертывание и базовый SDK.
- Слабая ссылка на библиотеки/фреймворки с символами, которые доступны только в новой iOS. Это значит, что ваше приложение будет работать на устройстве, у которого нет новых символов.
- Вы должны проверить, чтобы новый метод был доступен перед его вызовом. Вы должны удостовериться, что не вызываете метод с 5.0 или 4.X только тогда, когда ваше приложение находится на < 4.0. Конечно, вы должны грациозно работать с более старыми версиями, используя либо более старые методы, либо не поддерживая определенные функции, которые нуждаются в более новой поддержке SDK.
- NEW w/XCode 4.2: Для поддержки старых устройств вам необходимо добавить armv6 в архитектуры сборки и удалить armv7 из plist необходимых возможностей устройства.
Смотрите эти вопросы и ответы для более подробной информации:
- цель развертывания vs base/active sdk
- рекомендуемый способ поддержки обратной совместимости
- Как вы можете использовать функции iPhone 3.0 в приложении, совместимом с 2.0.
- iPhone слабая структура ссылок
- слабая связь с IB
- универсальная ошибка компиляции приложения iphone/ipad
- Приложения iphone должны включать armv6