Простой способ определить, использую ли я фреймворк, недоступный для более старых версий iOS.

После долгого сеанса кодирования, когда я добавил слишком много кода, не отслеживая все, теперь у меня есть приложение, в котором, вероятно, есть некоторые перечисления, специфичные для 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

  • 'TWTweetComposeViewController' устарел:СЛИШКОМ НОВОЕ!
  • 'TWTweetComposeViewController' устарел:СЛИШКОМ НОВОЕ!
  • 'TWTweetComposeViewController' устарел:СЛИШКОМ НОВОЕ!

/Users/mz/Dev/Working/Lumin/Lumin/LuminViewController.m

  • 'scrollView' устарел:СЛИШКОМ НОВОЕ!
  • 'connectionWithMediaType:' устарело:СЛИШКОМ НОВОЕ!
  • 'connectionWithMediaType:' устарело:СЛИШКОМ НОВОЕ!
  • 'AVCaptureDeviceSubjectAreaDidChangeNotification' устарело:СЛИШКОМ НОВОЕ!
  • 'setSubjectAreaChangeMonitoringEnabled:' устарело:СЛИШКОМ НОВОЕ!

Очень мило.

Я поместил следующее в файл.pch своего проекта и планирую сделать это для всех проектов.:

#if DEBUG
#define __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED __IPHONE_OS_VERSION_MIN_REQUIRED
#import "MJGAvailability.h"
#endif

Для любого проекта теперь я автоматически отслеживаю проблемы SDK на основе самой ранней версии iOS, на которую я ориентируюсь. Хотя все еще могут быть изменения SDK, о которых мне нужно беспокоиться, по крайней мере, я знаю о большинстве дополнений фреймворка, недоступных для более старой версии iOS.

7
задан mahboudz 24 April 2012 в 10:45
поделиться