сканер совместимости версий iphone - PullRequest
4 голосов
/ 14 января 2011

Хорошо, я разрабатываю приложения для iphone уже больше года, но есть одна вещь, которая все еще действительно отстой.

Допустим, я хочу сделать мое приложение совместимым с iOS 3.0 Я установил в своей SDK новейшую доступную версию и установил цель развертывания 3.0

.

Но что произойдет, если вы случайно вызовете функцию, доступную только в ... 3.1.x или более поздней версии? Правильно, просто вылетает.

Нет предупреждений или индикаторов о том, что функция доступна только в более поздней версии iOS. А поскольку эмулятор не поддерживает версии <4.0, невозможно проверить, действительно ли приложение работает. Вы даже не можете купить новое устройство, так как на них уже установлена ​​более новая iOS. И даже если у вас старое устройство, иногда почти невозможно проверить каждую часть вашего кода. </p>

И мне действительно нужно поддерживать более старые версии, поскольку я знаю, что мои клиенты (около 2/3) по-прежнему используют версии 3.x.

Нет ли ЛЮБОГО анализатора кода или чего-то такого, что сканирует доступность всех функций, вызываемых в приложении?

В одном случае приложение упало, потому что я позвонил

+ (id)sortDescriptorWithKey:(NSString *)key ascending:(BOOL)ascending

который является удобным методом для выделения +

- (id)initWithKey:(NSString *)key ascending:(BOOL)ascending;

(плюс он автоматически выпущен) Но sortDescriptorWithKey доступен только в версии 4.0 @ _ @

Ответы [ 3 ]

2 голосов
/ 14 января 2011

тот же вопрос здесь. Единственное, что я понял, это установить Base SDK Project AND Target на 3.0. Затем компилятор проверит, вызываете ли вы некоторые несуществующие методы.

Но вопрос для сканера все еще существует, потому что метод выше выдает мне некоторые ошибки при использовании ASI HTTP framework. Так что моя процедура заключается в

  1. изменить SDK на 3.0
  2. пройти через ошибки, которые лежат в основе моего собственного кода
  3. изменить методы на 3.0 совместимые
  4. установить Base SDK проекта обратно последний SDK

вам, вероятно, придется установить SDK 3.0 из предыдущей версии XCode. И нет необходимости устанавливать цель Base SDK обратно на последнюю версию. Однажды я установил его на 3.0 и не получаю ошибок от ASI HTTP.

// РЕДАКТИРОВАТЬ: ссылки для скачивания XCode 3.2.1: Snow Leopard и Leopard

0 голосов
/ 14 января 2011
0 голосов
/ 14 января 2011

Попробуйте проверить, вызвав метод responsedsToSelector

if([your_obj respondsToSelector:@selector(sortDescriptorWithKey:ascending:)]){
  // call sortDescriptorWithKey
}
else
{
  // call another method
}

Вы получите предупреждения при компиляции, но не произойдет сбой во время выполнения.

...