Однако это изменение (само по себе) предотвратит загрузку вашего приложения на устройстве 3.1.x. Это связано с тем, что новый параметр «iOS Deployment Target» (представленный в 4.x SDK) по умолчанию будет иметь то же значение, что и базовый SDK, который вы только что установили. Вы должны изменить этот новый параметр (он находится в группе «Развертывание») на самое раннее устройство iOS, которое будет поддерживать ваше приложение.
Теперь ваше приложение будет работать на любом устройстве под управлением этой версии или более поздней версии iOS. Но есть новая морщина. Если вы добавите код в свой проект, который использует классы или методы, представленные в 4.x, вы не получите предупреждения об этом в симуляторе, но он будет зависать при вызове вашим устройством 3.x. Вы должны обернуть такие вызовы кодом, который проверяет версию устройства во время выполнения, и выполнять вызовы только в том случае, если версия времени выполнения поддерживает эти вызовы.
Все это подробно обсуждается здесь: Установите xCode 3.2.3 с iPhone SDK 4, получите «Отсутствует базовый SDK», не можете увидеть другие SDK , который содержит ссылки на обсуждения того, как лучше кодировать эти проверки во время выполнения.