Новогодние скидки от MDLavka

Вы пишете в комментариях, что хотите купить из техники Apple и мы делаем вам индивидуальное предложение, от которого сложно отказаться!

Инструменты Apple для разработчиков

16 июля на пресс-конференции с журналистами Стив Джобс снова признался в любви своим покупателям, как бы двусмысленно это не звучало. Двумя месяцами ранее на конференции WWDC с 5000 разработчиками Apple представила несколько новых инструментов для создания приложений под мобильную платформу iOS 4.

В этом году на WWDC было не меньше дюжины разных сессий о методах улучшения разработки, в том числе о перемещении процессов с главного треда при помощи Blocks и Grand Central Dispatch. Месседж был простой и ясный: пишите приложения, делающие то, о чем заявлено в описании; пишите приложения, не использующие частные или недокументированные API и, самое главное, обеспечьте их стабильную работу. Когда разработчики игнорируют эти базовые правила, программы не попадают в App Store.

В этом году планка была поднята еще выше. С появлением многозадачности в iOS 4 приложения должны уметь уживаться друг с другом. В операционной системе Apple работает несколько мониторинговых служб (watchdog). И если какие-то процессы выполняются слишком долго (например, загрузка) или чрезмерно потребляется память, программа принудительно выгружается. К счастью, существует набор инструментов, помогающих разработчикам обеспечить высокое качество мобильных приложений.

Написание кода

Xcode. Первая линия обороны – статические анализаторы кода. Встроенный в Xcode статический анализатор основан на опен-сорсном решении для анализа исходного кода Clang Static Analyzer, способном искать баги в программах на C и Objective-C. Статический анализатор работает как компилятор и проверяет исходный код на логические ошибки и ищет участки кода, где можно использовать более оптимальную логику. Программа помогает в устранении неиспользуемых переменных и других проблем с управлением памятью.

Устранение ошибок в симуляторе

Allocations Instrument. Allocations Instrument используется для проверки качества работы приложений. Тестируя программу с помощью Allocations, можно выявить ситуации с потерей памяти. При тестировании берется снимок состояния программы и выполняются некоторые действия, затем отмена и возврат программы в исходное состояние. Если память, выделенная на операцию осталась на том же уровне, – проблем нет. Это самый простой сценарий: выполнение некоторых операций в программе, а затем возврат в состояние, предшествующее этим действиям.

Leaks Instrument. Leaks Instrument отслеживают утечки памяти при работе программы. Утечки приводят к тому, что потребление памяти программой неконтролируемо возрастает, в результате рано или поздно вступают в действие архитектурные ограничения среды и новое выделение памяти невозможно. Такие утечки ведут к аварийному закрытию программы. Если приложение захватывает большую часть памяти, а пользователь решит свернуть его, “наблюдателю” (watchdog) ничего не останется, как принудительно выгрузить программу для высвобождения ресурсов.

Zombies instrument. Большинство сбоев в приложениях вызвано обращениями к несуществующим объектам. Во время работы память постоянно выделяется и освобождается, и если процесс отдает ресурсы раньше, чем приложение успевает к ним обратиться, происходит сбой. Сценарий очень сложный для отслеживания простым дебаггером. Zombies instrument оставляет пустые или “мертвые” объекты на месте высвобожденных процессов. Эти объекты – “зомби”, к которым идет обращение из-за неправильной логики в коде и останавливают выполнение программы. “Зомби” принимают ошибочные вызовы и определяют строчки в коде, вызывающие аварийное закрытие программы.

Производительность на устройстве

Time Profiler. Time Profiler может работать в симуляторе, хотя Apple рекомендует использовать его на реальных устройствах. Главная причина в разнице производительности между симулятором на Mac и устройством на iOS. Apple рекомендует производить измерения на самых слабых моделях, например на iPhone 3G с iOS 4. Главная функция Time Profiler – замер времени выполнения каждого участка кода, что позволяет разработчикам увидеть части, нуждающиеся в исправлении. Какие-то моменты можно переписать, например, убрав логику с главного треда, с помощью Blocks и Grand Central Dispatch. Несмотря на то, что Apple сильно упростила выполнение таких задач, разработчики неохотно тратят время на оптимизацию своего кода.

Использование в полевых условиях

Energy Diagnostics. Инструмент под названием Energy Diagnostics, пожалуй, самый интересный из всех, что предложила Apple. Energy Diagnostics позволяет проводить тестирование в полевых условиях, максимально приближенных к реальным. Затем собранные данные анализируются для оценки потребления заряда аккумулятора каждой функцией. Инструмент подсказывает разработчикам, как долго используется каждый компонент устройства. Если вам нужно узнать местоположение пользователя, Energy Diagnostics покажет какие компоненты включаются в работу и посчитает затраченное время. GPS – один из самых тяжелых в плане потребления заряда аккумулятора компонент. Поэтому правильные разработчики выключают службы обнаружения сразу по завершению их работы. Energy Diagnostics помогает настроить оптимальное использование ресурсов устройства.

Отчеты об ошибках

Crash Reports. iTunes Connect используется разработчиками для взаимодействия с App Store и отправки приложений в Apple. Там же происходит сбор данных о сбоях в работе программ на устройствах пользователей. Отчеты доступны разработчикам для анализа узких мест в коде и содержат статистику использования: время простоя “наблюдателей” (watchdog) при запуске, восстановлении или паузах в работе программ и описание ситуации, когда пользователь или система принудительно завершили работу приложения. Crash Reports помогает в исправлении багов, которые не были выявлены при тестировании в полевых условиях.

Такие инструменты представила Apple на WWDC в этом году. Не имея возможности повлиять на качество приложений сторонних разработчиков, Стив Джобс предложил инструменты, помогающие в написании хороших приложений.

Следите за новостями Apple в нашем Telegram-канале, а также в приложении MacDigger на iOS.

Присоединяйтесь к нам в Twitter, ВКонтакте, Facebook, Google+ или через RSS, чтобы быть в курсе последних новостей из мира Apple, Microsoft и Google.