После долгого сеанса кодирования, когда я добавил слишком много кода, не отслеживая все, теперь у меня есть приложение, в котором, вероятно, есть некоторые перечисления, специфичные для iOS 5.0 и 5.1, вызовы и фреймворки, однако я хочу, чтобы мое приложение поддерживало iOS версии 4.3.
Я надеялся, что есть простой способ настроить компиляцию Xcode так, как если бы он компилировался для iOS 4.3, чтобы я получал ошибки для всего кода-нарушителя, который необходимо обусловить и/или альтернативно закодировать., для более старых версий iOS.
Я думал, что получу это, используя опцию компилятора :
-D__IPHONE_OS_VERSION_MAX_ALLOWED=__IPHONE_4_3
, но это приводит к ошибке в системных заголовочных файлах, а не в моем коде.
Учитывая, что доступность большинства перечислений и фреймворков указана в заголовочных файлах, я должен думать, что есть простой способ сделать то, что мне нужно.
Кому-нибудь удалось сделать подобное, не прибегая к загрузке старых Xcodes со старыми SDK? Там я могу столкнуться с проблемой Xcodes, который не будет работать должным образом под Lion (, который я использую ).
ОБНОВЛЕНИЕ:Похоже, я не могу установить Xcode 3.2.6 на Lion. Теперь мне придется найти Snow Leopard Mac, если я не найду способ использовать параметры компилятора или заставить Xcode использовать старые SDK...
Вот пример того, что ответ @mattjgalloway сделал для меня:
Приложение Lumin Группа
/Users/mz/Dev/Working/Lumin/Lumin/MyUIScreen.m
/Users/mz/Dev/Working/Lumin/Lumin/LuminViewController+Share.m
/Users/mz/Dev/Working/Lumin/Lumin/LuminViewController.m
Очень мило.
Я поместил следующее в файл.pch своего проекта и планирую сделать это для всех проектов.:
#if DEBUG
#define __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED __IPHONE_OS_VERSION_MIN_REQUIRED
#import "MJGAvailability.h"
#endif
Для любого проекта теперь я автоматически отслеживаю проблемы SDK на основе самой ранней версии iOS, на которую я ориентируюсь. Хотя все еще могут быть изменения SDK, о которых мне нужно беспокоиться, по крайней мере, я знаю о большинстве дополнений фреймворка, недоступных для более старой версии iOS.