27

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

  • Upload
    scino

  • View
    106

  • Download
    3

Embed Size (px)

Citation preview

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

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

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

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

Однако

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

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

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

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

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

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

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

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

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

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

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

Почему iOS

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

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

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

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

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

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 разрабатываладля своих компьютеров.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Полиморфизм

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

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

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

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

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

Категории

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

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

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

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

Тип id

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

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

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

nil

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

atomic nonatomic

strong weak

readwrite readonly

getter= setter=

copy assign

retain unsafe_unretained

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

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

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

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

3. Классы – MyClass

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

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

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

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

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