Это ведет себя как ожидалось: изменение цели развертывания только влияет на минимальную версию ОС, на которой будет работать приложение, а не на максимальную.
Если вы используете SDK 4.3 и устанавливаете цель развертывания 4.0, это просто означает, что ваше приложение будет жестко связывать любые API до 4.0 и слабое связывание любых API, представленных между 4.0 и 4.3. Вы должны проверить во время выполнения либо наличие API (например, нулевого указателя для функций C), либо версию ОС.
Цель развертывания генерирует предупреждения XCode, но для устаревших API: например, если вы используете API, устаревший в версии 4.1 и новее, а цель развертывания - 4.1 или новее, вы получите предупреждение, но если оно 4.0 или раньше, вы «т.
Похоже, что вам действительно нужно в вашем случае эквивалент MAC_OS_X_VERSION_MAX_ALLOWED
(это не является частью настроек сборки по умолчанию, но вы можете определить его самостоятельно и оно должно переопределить значение, установленное SDK), но для iOS SDK. Я не уверен, что он официально существует на самом деле: мне удалось найти __IPHONE_OS_VERSION_MAX_ALLOWED
, но, учитывая, что он начинается с __
, я не уверен, что он действительно поддерживается.
Правильное решение, по-видимому, заключается в простой сборке с предыдущими версиями SDK (вы всегда можете сделать это в симуляторе), и вы получите ошибки XCode при использовании отсутствующих API.
Для получения дополнительной информации прочитайте эту техническую заметку: http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/cross_development/Configuring/configuring.html