Разработка мобильных приложений под iOS

Preview:

Citation preview

Почему такая популярность?

Так или иначе людям хотелось всегда иметь при себе компьютер

Однако

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

1.Интернет серфинг2.Просмотр почты3.Обмен мгновенными сообщениями по сети

и многое другое

Хотя задачи и простые, но!

На мобильном устройстве:

1.Маленький экран

2.Слабый процессор

3.Мало памяти

4.Медленный интернет

Почему iOS

1.Развитая инфраструктура и адекватная документация2.Легкость в создании простейших приложений для демонстрации

идей3.Быстрый симулятор для отладки4.Мало разрешений – предсказуемая отладка5.Пользователи приучены платить за продукт $$$6.Спорное: Objective – C

Минус только один – платная подписка (99$) для отладки на устройстве

Основной язык разработки

Objective-C – немного истории

1. Objective-C возник в 80-x как модификация С в сторону Smalltalk. 2. 1988 – NeXT лицензирует Objective-C3. 1996 – Apple покупает NeXT и Objective-C становится основным

языком разработки Mac OS. IDE для кода назвали Xcode, а для GUI –Interface Builder.

4. 2007 — Objective-C — основной язык для iPhone OS

Интресно, что многие базовые классы в Objective-C сохранили префиксNS: NeXTSTEP – операционная система, которую NeXT разрабатываладля своих компьютеров.

Особенности Objective-C

1.Объектно-ориентированный

2.Компилируется в машинный код

3.Можно писать код на С и С++ (Objective-C++)

4.Слабо-типизированный

5.Управление памятью основано на счетчике ссылок (Automatic Reference Count)

6.Посылка сообщений, вместо прямого присвоения и отсюда почти полная победа над NullPointerException (больше не надо писать

трехэтажные конструкции if (object != NULL )… )

Среда разработки

Среда разработки – XCode последней версии (обновляетсядовольно часто). На данный момент это версия 6.1.1.

Чтобы начать разрабатывать потребуется:1. Mac с Mac OS X Yosemite 10.102. Либо Хакинтош на компьютере (проблемы с драйверами) или

лучше на виртуалке (образ есть в интернете)

Синтаксис Objective-C

Файл интерфейса *.h

Файл реализации *.m

Наследование – через файл *.h

Расширение (Extension) – через файл *.m

Инкапсуляцияфайл *.h

Инкапсуляцияфайл *.m

Protected методов нет!

Инициализация

Существует множество паттернов по инициализации объекта

Полиморфизм

ПротоколыПротоколы - это аналог интерфейсов в Java или C#

Реализация протокола

Категории

Позволяют добавлять методы в существующий класс

Реализация методов категорий

Тип id

Это одна из наиболее сильных фич в Objective-C

id – это указатель на тип, но в отличие от void * он указывает всегдаобъект (в терминах Objective-C объект должен иметь isa указатель, который указвает на класс), но не на случайный участок памяти

nil

1. аналог null из других языков

2. можно вызывать любой метод, не будет исключения

3. если метод возвращает объект – вернется nil

4. если метод возвращает число – вернется 0

5. если метод возвращает структуру – результат не определен

Управление памятью

Управление памятью в Objective-C осуществляется при помощисчетчика ссылок ARC (Automatic Reference Counter).

В отличие от Garbage Collector, который занимается удалениемобъектов в отдельном потоке, ARC расставляет специальныеметоды для наращивания/уменьшения счетчика ссылокконкретного объекта, освобождая программиста от написанияметодов retain/release.

Как устроен ARC?

1.после init счетчик ссылок равен 1

2.когда объекту изменяют значение – retain новому объекту,release старому.

3.когда в массив или словарь добавляют элемент, вызываетсяretain

Атрибуты свойств

atomic nonatomic

strong weak

readwrite readonly

getter= setter=

copy assign

retain unsafe_unretained

Рекомендации по стилю кода

1. Локальные переменные – myLocalVariable

2. Свойства – myProperty

3. Классы – MyClass

4. Методы – doSomethingWithObject:(MyClass *)object fromObject:(MyClass *)fromObject;

5. Внутренние переменные – _myLocalVariable

Куда дальше?https://developer.apple.com/library/ios/navigation/

Аарон Хиллегасс “Objective-C”. Программирование для iOS и Mac OS

Recommended