ПРОГРАММИРОВАНИЕ ПОД IPHONE, IPAD OBJECTIVE-C Часть 1

Что еще нужно знать

В этом уроке я познакомлю вас с некоторыми жизненно важнымы, но часто забываемыми аспектами разработки приложений для iOS. Я хочу, чтобы вы были осведомлены о тонких различиях между различными устройствами iOS. В частности, объем доступной памяти, часто ошибочно расчитывается, потому что вы можете использовать только часть памяти каждого устройства.

iOS устройства

Я также хочу, чтобы вы знали, что симулятор iOS представляет собой прекрасный инструмент для тестирования, но он не может быть использован для оценки производительности, памяти и других функций. Работа на симуляторе может сильно отличаться от работы вашего приложения на реальном устройстве. Не попадитесь в ловушку, оценивая поведение вашего приложения только на симуляторе.

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

Вы можете обратиться к спецификациям компании Apple, чтобы ознакомиться с техническими характеристиками iOS устройств. Ниже приведены список ссылок на устройства типа: iPhone, IPod Touch и IPad и спецификации устройств соответственно:

В следующей таблице показаны наиболее важные различия, касающиеся аппаратной части устройства, которые не стоит забывать при разработке. Эта таблица показывает, что устройства iOS не однаковые, как вы могли бы думать. Например, следует отметить, что второе поколение iPod Touch имеет более быстрый процессор, чем второе поколение iPhone 3G, а затем четвертое поколения iPod Touch имеет только половину памяти iPhone 4. И в iPad 2 представлен впервые двухъядерный процессор.

Свойства устройств

 

Устройство Процессор Графика Разрешение Память (RAM)
iPhone/iPod touch первого поколения 412 MHz PowerVR MBX 480×320 128MB
iPhone 3G 412 MHz PowerVR MBX 480×320 128MB
iPod touch второго поколения 533 MHz PowerVR MBX 480×320 128MB
iPhone 3GS/iPod touch третьего поколения 600 MHz PowerVR SGX535 480×320 256MB
iPad 1 GHz PowerVR SGX535 1024×768 256MB
iPhone 4 800 MHz PowerVR SGX535 960×640 512MB
iPod touch четвертого поколения 800 MHz PowerVR SGX535 960×640 256MB
iPad 2 2x 900 MHz PowerVR SGX543 1024×768 512MB

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

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

ПРИМЕЧАНИЕ: ОЗУ не следует путать с флэш-памятью для хранения MP3, видео, приложения и фотографии, из которых даже самое первое iOS устройство имеет 8 Гб. Флэш-память — память эквивалентна жесткому диску компьютера. ОЗУ память приложения использует для хранения кода, данных и текстур во время работы приложения.

В последней колонке таблици приведен объем памяти для каждого устройства. Однако, это не объем памяти доступной для приложений. iOS все время использует большую ее часть, и это усугубляется в iOS 4, когда ввели многозадачность. В каждом устройстве под управлением iOS 4 или более новой ворсий могут быть запущены различные фоновые задачи, которые используют неопределенный дополнительный объем памяти.

Со временем, iOS разработчики смогли расчитать теоретический максимальный объем оперативной памяти, который можно использовать для приложения, прежде чем его принудительно закроет ОС. Таблица ниже показывает на что вы можете расчитывать, когда разрабатываете приложение. В идеале, вы должны использовать память только в определенных рамках. Это является особенно сложной задачей для устройств с 128 Мб оперативной памятью, потому что есть только 20 Мб — 25MB оперативной памяти, которая будет более или менее гарантированно доступна для приложений. Примерно в этот момент ваше приложение может начать получать уведомления о нехватке памяти. Вы можете игнорировать предупреждения памяти 1-го уровня, но если приложение продолжит использовать больше памяти, вы получите предупреждение 2-го уровня, после чего операционная система закроет приложение, если вы не освободите память.

Свойства памяти

 

Установлено Доступно Предупрежедение
128MB 35MB — 40MB 20MB — 25MB
256MB 120MB — 150MB 80MB — 90MB
512MB 340MB — 370MB 260MB — 300MB (по оценкам)

iOS может немного помочь вам с освобождением памяти посредством вызова метода didReceiveMemoryWarning в UIViewControllerили applicationDidReceiveMemoryWarning в AppDelegate. Добавьте один из этих методов в соответствующий контроллер и в нем удаляйте объекты.

Если вы разрабатываете для устройства с объемом памяти 256 Мб или 512 Мб, то имейте в виду, что существует большое количество iOS устройств только с 128 Мб. Если вы не планируете ограничить вашу программу только третим поколением устройств, вы должны провести тестирование вашей программы на первом или втором поколении устройств в первую очередь, чтобы удалить проблемы чрезмерного потребления памяти.

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

На устройствах с 128 Мб оперативной памятью можно выделить примерно не более 35 МБ — 40 МБ памяти. Имейте в виду, что это только теоретический максимум, количество меняется на каждом устройстве и может даже зависеть от того, какие приложение пользователь ранее использовал. Именно по этой причине разработчикам приложений рекомендуется перезагружать устройства, если у вас возникли сбои. Это позволит освободить немного больше памяти. Главной из причин неожиданного завершения приложения заключается в том, что устройству не хватило памяти.

Вы можете измерить памяти с помощью инструмента, которое описано в руководстве пользователя Apple:

iOS Simulator

Apple’s iOS SDK позволяет запускать и тестировать iPhone и IPad приложения на вашем Mac с помощу iOS Simulator. Основная цель симулятора — быстрое тестирование своего приложения, потому что установка его на iOS устройство занимает много времени и увеличивается по мере роста приложения.

Однако, есть несколько предостережений в использованию iOS симулятора. По всем этим причинам, я рекомендую вам проверить ваше приложение на реальном устройстве. По крайней мере, после каждого значительного изменения или в конце дня, вы должны выполнить тест на реальном устройстве, для того, чтобы лишний раз убедиться, что все работает так, как вы хотите.

Производительность работы приложения в iOS симуляторе полностью зависит от процессора вашего персонального компьютера. Графические процессы визуализации не используют аппаратные возможности ускорения графического чипа в Mac. Это следует учитывать при создании игр. Поскольку частота кадров игры в симуляторе не имеет вообще никакого смысла. Всегда делайте тестирование производительности на устройстве.

Симулятор iOS имеет возможность использовать всю память, имеющуюся на вашем компьютере, так что вам доступно намного больше памяти на симуляторе, чем на устройстве. Это означает, что вы не будете получать уведомления о нехватке памяти, и ваша программа будет прекрасно работать на симуляторе, но вы можете быть в шоке при попытке запустить ее в первый раз на реальном устройстве. Тем не менее, можно оценить какой объем памяти в настоящее время используется в вашим приложением, работая с симулятором.

Некоторые функции, такие как устройства ориентации, могут быть смоделированы с помощью меню или сочетания клавиш подобно, как на  реальном устройстве. Но некоторые аппаратные функции, такие как, акселерометр, вибрации или получение информации о местоположении не могут быть проверены на симуляторе, потому что аппаратные средства компьютера не в состоянии имитировать эти функции.

Время от времени вы можете столкнуться с неприятным случаем, когда приложение работает просто отлично на симуляторе, но падает на устройстве или тормозит без видимых причин. Там также может быть графические глюки, которые появляются только на симулятор или только на устройстве. В случае сомнений, не вдаваясь в длительные поиски, чтобы выяснить, что случилось, всегда попробуйте запустить приложение на устройстве, если у вас возникли проблемы на симуляторе, или наоборот. Иногда проблема может просто уйти, а если нет, вы можете получить подсказку о том, что происходит.

Comments are closed.