Друзья :) оставьте Ваш комментарий, если у Вас есть какие-либо замечания, дополнения или хороший совет по данному материалу. Поделитесь Вашим опытом с коллегами и они Вас не забудут ;)

Документация

Официальная документации для разработчиков iPhone

Доставка событий (Event)

Как известно из Ядро приложения (The Core Application), как только пользователь касается экрана, iPhone OS регистрирует данный набор касаний и создает объект типа UIEvent, который помещается в очередь событий. Если система регистрирует тряску телефона, как событие движения (motion event), то оно тоже помещается в очередь событий. Объект-синглетон типа UIApplication берет первый объект события из очереди событий приложения для обработки. Обычно это отсылка события ключевому окну приложения - окно, которое находится в фокусе т.е. с которым взаимодействует пользователь. Затем UIWindow объект посылает событие главному объекту для обработки. Объекты для обрабоки событий касаний и тряски разные.

ikirin аватар

UIKit View Classes

основан на материалах http://developer.apple.com/iphone/library/documentation/iPhone/Conceptua...

Класс UIView определяет основные свойства для вью и не только визуальные. UIKit содержит подклассы для создания стандартных элементов, таких как текстовые поля, кнопки, тулбары и т.д. Данные подклассы определяют внешний вид и основное поведении элементов. Картинка ниже показывает иерархию классов для всех вью (view) представленных в UIKit. Данные классы спроектированы, чтобы их можно было использовать с сочетанием с Объектом Делегирования или же отдельно. Исключением являются UIView и UIControl классы.

Описание View (UIView)

View имеет тип UIView и представляет прямоугольник на экране. В iPhone приложение Вьюха играет ключевую роль т.к. отрисовывает интерфейс и отвечает на пользовательские действия над этим интерфейсом.

Кроме того что вью отображает контент и обрабатывает события она может управлять одной или более сабвью (subview). Сабвью - это простой view объект вложенный в другой view объект, который является родителем или superview. Вью (view) может содержать любое количество сабвью (subview). Также, можно создавать достаточно большую вложенность вьюх т.е. добавлять subview в subview. Иерархия вьюх определяет то, как они будут отображены на экране. Subview отображается поверх родительского View. Иерархия также, определяет то, как будет вью обрабатывать события и изменения. Родительская View должна управлять своими вьюхами, которые в нее вложены. А именно, должна устанавливать их размер, позицию, обрабатывать события, которые не обрабатывает сабвью (subview).

Описание Window (UIWindow)

материал основан на http://developer.apple.com/iphone/library/documentation/iPhone/Conceptua...

Также как и в Mac OS, iPhone приложение, обычно, имеет одно главное окно (window) представленное классом UIWindow. Данное окно создается во время старта приложения программно или загружается из nib-файла. В него добавляются объекты вьюх (Views) и затем они отображаются в данном окне. Все манипуляции с окном выполняются программно через его интерфейсы. Также, окно используется для доставки событий (events) к Вашему приложению.

Когда Вы создаете окно приложения в ручную, следует устанавливать его размер равный размеру экрана. Если же Вы грузите окно из nib-файла, то оно уже будет соответствовать размеру экрана т.к. Interface Builder не позволяет установить размер окна меньше чем у экрана. Если окно создается программно, то нужно указать какой объект для его создания будет использован:

UIWindow* aWindow = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];  

События и типы событий

материал основан на http://developer.apple.com/iphone/library/documentation/iPhone/Conceptua...

Событие - это объект представляющий действия пользователя, такие, как касание экрана пальцем, тряска девайса. В Cocoa Touch объект события представлен UIEvent классом. Объект события может инкапсулировать связанные события пользователя. Например, пользователь топнул пальцем по экрану и провел им по поверхности.

iPhone OS поддерживает два типа событий:

Загрузка приложения в Landscape режиме (альбомный режим)



основано на статье
http://developer.apple.com/iphone/library/documentation/iPhone/Conceptua...

Стандартно, приложения в iPhone OS загружаются в портретном режиме (portrait mode), так, как выглядит Home экран. Если же телефон повернуть на левый бок или правый, то приложение переключится в Landscape mode. Все это стандартное поведении системы. Чтобы приложение всегда стартовало в режиме Landscape нужно:

  • В файл Info.plist добавить ключ UIInterfaceOrientation. Значением ключа указать UIInterfaceOrientationLandscapeLeft (перевернет экран в левую сторону) или UIInterfaceOrientationLandscapeRight (повернет экран вправо).
  • Установите раскладку (layout) view в режим Landscape и убедитесь что опция autoresizing установлена корректно.
  • Переопределите метод shouldAutorotateToInterfaceOrientation: в вью-контроллере (view controller) чтобы возвращалось YES для режима Landscape и NO для портретного режима (portrait mode).
ikirin аватар

Понижаем энергозатраты

материал основан на http://developer.apple.com/iphone/library/documentation/iPhone/Conceptua...

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

  • CPU-активность;
  • WiFi, baseband (Edge, 3G) модули;
  • Аксиллерометор;
  • Дисковые операции;

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

Иконка приложения и Заставка

перевод http://developer.apple.com/IPhone/library/documentation/iPhone/Conceptua...

Иконка приложения располагаемая на Home экране по умолчанию имеет имя Icon.png. В файле Info.plist можно поменять название иконки путем изменения значения CFBundleIconFile ключа. Иконка должна быть в формате PNG и располагаться в корне приложения (см. Структура пакета iPhone приложения (Application Bundle)). Иконка должна быть размером 57 x 57 пикселов без круглых углов и эффекта глянца. Система сама применит эти эффекты в момент отображения. Данное повидение можно изменить, если включить UIPrerenderedIcon ключ в Info.plist файл.

Операции с плавающей точкой (с дробными числами)

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

Не забудьте убрать ключ -mthumb во время компиляции, если используете операции с плавающей точкой.

Используйте память разумно (еще немного о памяти)

В iPhone OS нет гарбеж коллектора (механизм удаляющий объекты из памяти), поэтому, разработчики должны в ручную выполнять данную задачу. Ниже приводятся советы как лучше это сделать:

  • Как можно меньше используйте autorelease метод - autorelease не удаляет объекты из памяти сразу, они будут удалены, когда Вы явным образом очистите autorelease pool или до момента наступления следующего кольца событий (event loop). Если возможно, то лучше использовать release метод, который сразу удаляет объекты из памяти;