2012-10-25 1 views
2

После обновления XCode до 4.5 он также обновился до iOS SDK 6 (и, как мне кажется, удалил старый SDK). Я снова установил старый симулятор 5.1 (из предпочтений загрузки), но есть ли способ получить ошибки времени компиляции, соответствующие цели развертывания (5.1)?Совпадение ошибок компиляции XCode с целью развертывания iOS 5.1

В настоящее время я могу скомпилировать вызовы методов iOS6, только чтобы они не выполнялись во время выполнения на устройстве или симуляторе.

Есть ли способ получить ошибки или предупреждения во время компиляции? И, возможно, удалить новые методы после завершения кода?

ответ

3

Нет, вы несете ответственность за проверку доступности классов, методов, констант и перечислений во время выполнения, когда есть вероятность, что у вашей цели развертывания их нет.

if ([MyClass class] == nil) { } 

if (![MyClass instancesRespondToSelector:@selector(foo)]) { } 

if (&kSomeConstant == NULL) { } 

Кроме того, если весь каркас не существует, ссылка на него необязательно (слабая). Наконец, проверьте реальные устройства с каждой версией ОС, которую вы поддерживаете.

Old versions of Xcode are available to install side by side, но они не смогут создать свой проект, если вы использовали любые IOS 6 рамок, классы, методы и т.д.

+0

Итак, мне нужно установить старые XCodes? Не можете просто получить iOS 5.1 SDK в текущий XCode? – Thilo

+0

Это не поддерживаемая конфигурация. Он может работать или не работать. –

5

Clang не поддерживает такие предупреждения, поэтому нельзя создавать их во время компиляции.

Однако это не значит, что это невозможно, потому что, надеюсь, Apple добавляет макросы доступности почти к каждому публичному API. Поэтому сторонние парсеры могут определить, доступен ли метод или нет. Например. AppCode может это сделать. Он будет генерировать такие предупреждения: enter image description here