Как использовать предупреждения компилятора xcode для определения минимальной цели развертывания IOS
Я создаю приложение iOS с помощью Xcode 3.2.5 с базовым SDK, установленным в iOS 4.2
Я знаю, что использовал api из 4.0 и 4.1, но не уверен, действительно ли мне требуется 4.2.
В соответствии с Руководством по разработке iOS "Xcode отображает предупреждения сборки, когда обнаруживает, что ваше приложение использует функцию, недоступную в выпуске целевой ОС".
Поэтому я надеялся использовать предупреждения компилятора для получения минимального требования к ОС.
Однако даже когда я устанавливаю iOS для развертывания iOS 3.0, я все равно не получаю никаких предупреждений компилятора.
Я должен что-то делать неправильно, но не уверен, что? Может ли кто-нибудь подтвердить, что они получают предупреждения компилятора, когда цель развертывания iOS меньше базового SDK, а код использует базовые функции SDK? Или предупреждения в компиляторе показывают только если вы связываете инфраструктуру, которая не существовала в целевой версии развертывания iOS?
Ответы
Ответ 1
Он работает как ожидалось: изменение цели развертывания только влияет на минимальную версию ОС, на которую будет работать приложение, а не максимум.
Если вы используете 4.3 SDK и устанавливаете цель развертывания в 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 (вы всегда можете сделать это в Simulator), и вы получите ошибки Xcode при использовании отсутствующих API.
Для получения дополнительной информации прочитайте этот технот: http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/cross_development/Configuring/configuring.html
Ответ 2
временно измените базовый sdk, чтобы увидеть их
Ответ 3
Отредактировано: для обнаружения новых API, которые доступны только в новых версиях iOS, я не думаю, что Xcode может сделать это автоматически для нас. Мы должны сами их поместить. Мой рекомендуемый источник чтения:
- Войдите в свою учетную запись разработчика и выполните поиск API diffs. Эти официальные документы с API-документами должны быть тщательными и полезными.
- Отметьте отличный пост о том, как завершить ваш код, чтобы он совместим с более низкими версиями iOS:
===
Попробуйте очистить папку проекта build. После этого вы должны увидеть предупреждения об устаревших API, которые использовали ваш код.
![alt text]()
![alt text]()