Как найти вызовы «свежих» API, которые ломают ваше приложение на старых SDK

Итак, как же найти вызовы «свежих» API, которые ломают ваше приложение на старых SDK. На самом деле я знаю только один из ответов на этот вопрос. Надеюсь, кто-то из читателей блога расскажет мне еще один или два. Сегодня утром пришло письмо от одного из заказчиков, что я обещал им безоблачную работу приложения на iOS SDK не ниже версии 5.0. На самом деле они использовали всегда версию 6.0 и выше. Это приложение ддля внутренних нужд внутри компании, и оно не размещается в AppStore. Но вдруг им потребовалось запустить приложение на iPod 3Gen с iOS 5.1.1 на борту … и бабах! Все упало. Они сразу же связались со мной, и прислали несимволизованный crashlog. На самом деле даже из такого лога было видно в чем проблема. Я использовал метод dequeueReusableCellWithIdentifier: forIndexPath:, введенный только в 6-ой версии, вместо хотя бы этого метода dequeueReusableCellWithIdentifier:

Можно было бы все быстро поправить и отослать, но где гарантия, что дальше не будет проблем, а симулятора 5.1.1 или устройства, чтобы проверить у меня нет. Тогда я начал лазить по stackoverflow с целью найти какое-то решение, которое мне поможет выловить все мои «проколы». Оказалось, что подобной встроенной функциональности в XCode 5 не существует. Надо сказать, что хотя я шапочно знаком с разработкой под Android, я знаю, что там такая функциональность сразу включена в их analyzer. Вот этот ответ на stackoverflow меня заинтересовал — http://stackoverflow.com/questions/19111934/get-xcode-5-to-warn-about-new-api-calls . Но к сожалению, как я не пробовал, мне не удалось получить никаких warnings компилятора. Если кто-то знает, как заставить работать эту штуку с макросами, буду рад услышать. Тут я заметил, что есть какой-то платный софт для этого дела, и перешел на сайт — http://www.deploymateapp.com и после недолго игры с демкой, купил программу. Относительно этого моего проекта, трата 20 баксов оказалась напрасной, так как больше серьезных проблем с совместимостью между версиями не осталось кроме использования параметров NSLineBreakByWordWrapping (6.0) вместо UILineBreakModeWordWrap (5.0), но так как числовые значения этих констант не поменялись, то я не стал ничего менять. Но о покупке я совершенно не пожалел, так как мне понравилось, что я практически мгновенно получил информацию по моему проекту, и быстро ответил заказчику. А это, порой, самое главное.

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s