Download - Первое приложение для iPhone
![Page 1: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/1.jpg)
Первое приложение для iPhone
Глеб ТарасовCUSTIS
![Page 2: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/2.jpg)
/ 48
Почему мобильная разработка?
2
![Page 3: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/3.jpg)
/ 48
Для десктопов сложно что-то придумать
3
![Page 4: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/4.jpg)
/ 48
Веб — перепаханное поле
4
![Page 5: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/5.jpg)
/ 48
Мобильные приложения — наше всё!
5
![Page 6: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/6.jpg)
/ 48
Но надо спешить!
6
![Page 7: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/7.jpg)
/ 48
Динамика роста AppStore
7
![Page 8: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/8.jpg)
/ 48
Какую мобильную ОС выбрать?
8
![Page 9: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/9.jpg)
/ 48
США9
![Page 10: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/10.jpg)
/ 48
Россия10
![Page 11: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/11.jpg)
/ 48
Языки, платформы
11
iOS Objective-C Mac
Windows Phone 7 C# Win
Android Java Win, Mac, Linux
Symbian C++ Win
Blackberry Java Win
![Page 12: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/12.jpg)
/ 48
Мобильные фреймворки
12
• Wink Toolkit
• iUI
• Dojo Mobile
• dHTMLx Touch
• jQTouch
• jQuery Mobile
• Sencha Touch
• Xui (не популярен в России)
http://lib.custis.ru/Мобильная_веб-разработка_(Андрей_Ребров,_ADD-2011)
![Page 13: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/13.jpg)
/ 48
Компиляция веб-приложений в нативные
13
• PhoneGap
• MotherApp
• Big5
• Rhodes
• Titanium
![Page 14: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/14.jpg)
/ 48
Wunderlist
14Titanium
http://www.6wunderkinder.com/wunderlist/
![Page 16: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/16.jpg)
/ 48
Что нужно для разработки?
16
![Page 17: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/17.jpg)
/ 48
Попробовать
17
• Хакинтош под виртуальной машиной (устанавливаем Mac OS на VirtualBox)
• XCode 4 ($5)
![Page 18: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/18.jpg)
/ 48
Полноценная разработка
18
• Макинтош• iPhone для тестирования
• Подписка разработчика Apple ($99 / год)
![Page 19: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/19.jpg)
/ 48
Objective-C
19
![Page 20: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/20.jpg)
/ 48
История
20
1981 — Object-Oriented Pre-Compiler (OOPC). Компания StepStone.Tom Love & Brad Cox
1986 — Objective-C. «Object-Oriented Programming, An Evolutionary Approach» (Brad Cox).
1988 — NeXT лицензирует Objective-C
1996 — Apple покупает NeXT. Objective-C — основной язык для Mac OS.
2007 — Objective-C — основной язык для iPhone OS
![Page 21: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/21.jpg)
/ 48
Основные особенности
21
• объектно-ориентированный• компилируется в машинный код• полностью совместим с Си
• header-файлы
![Page 22: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/22.jpg)
/ 48
Сравнение с другими языками
22
• Нет статических полей• Нет абстрактных методов и классов• Нет protected методов
• Нет generic-ов
• Нет namespace-ов
• YES/NO вместо true/false. nil вместо null
![Page 23: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/23.jpg)
/ 48
Сравнение с другими языками
23
• Есть свойства• Есть лямбда-функции• Можно писать без статических проверок на типы• Логичная иерархия коллекций (readonly базовый для mutable)
• Именованные параметры методов
• Все методы виртуальные
![Page 24: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/24.jpg)
/ 48
Не вызовы методов, а отправка сообщений
24
Objective-C [myObject doSomething:myArgument];
C++ myObject->doSomething(myArgument);
C#, JAVA, Python myObject.doSomething(myArgument);
PHP, Perl $myObject->doSomething($myArgument);
![Page 25: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/25.jpg)
/ 48
Непривычный синтаксис
25
C# Objective-C
a[i] [a objectAtIndex:i]
a[key] [a objectForKey:key]
a + b [a stringByAppendingString:b]
a.Replace("a", "b") [a stringByReplacingOccurrencesOfString:@"a" withString:@"b"]
![Page 26: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/26.jpg)
/ 48
Зато
26
C# Objective-C
a.Process(q, r, t, f) [a processQuery:q withRadius:r withTime:t callWhenFinish:f]
![Page 27: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/27.jpg)
/ 48
Управление памятью
27
• счетчик ссылок retainCount
• retain: retainCount++
• release: retainCount--
• dealloc, когда retainCount = 0
![Page 28: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/28.jpg)
/ 48
Model – View – Controller
28
![Page 29: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/29.jpg)
/ 48
Демонстрация
29
![Page 30: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/30.jpg)
/ 48
Публикация приложения
30
![Page 31: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/31.jpg)
/ 48
Регистрация в AppStore
31
• Покупаем в Яндекс.Деньги виртуальную карту на 3000 рублей
• Заполняем электронную форму регистрации
• Отсылаем факс через онлайн-сервис
• Ждем подтверждения
![Page 32: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/32.jpg)
/ 48
Что нужно?
32
• Название• Имя приложения в iPhone
• Поддерживаемая версия iOS
• Выбрать категорию• Иконка• Описание• Скриншоты
![Page 33: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/33.jpg)
/ 48
iTunes Connect
33
![Page 34: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/34.jpg)
/ 48
Продвижение
34
![Page 35: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/35.jpg)
/ 48
Полезные советы
35
![Page 36: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/36.jpg)
/ 48
Поддержка старых версий iOS
36
![Page 37: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/37.jpg)
/ 48
Поддержка iPad,iPod Touch
37
![Page 38: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/38.jpg)
/ 48
Поддержка Retina
38
![Page 39: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/39.jpg)
/ 48
Вызов метода, создание объекта — долго!
39
![Page 40: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/40.jpg)
/ 4840
Действие Количество LLVM GCC
Вызов Objective-C метода
10’000’000 1 сек. 0.9 сек
Вызов C функции 10’000’000 0.2 сек. 0.2 сек.
Создание объекта
1’000’000 6.3 сек. 5.3 сек.
Создание С структуры
10’000’000 1.9 сек. 0.7 сек.
Измерялось на iPhone 3GS
![Page 41: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/41.jpg)
/ 48
Избегать autorelease.Особенно в цикле.
41
![Page 42: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/42.jpg)
/ 48
Все вычисления делать заранее
42
![Page 43: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/43.jpg)
/ 48
Обратная связь:кнопка «написать письмо»
43
![Page 44: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/44.jpg)
/ 48
При тестировании приложения удалите его с телефона и сбросьте настройки
44
![Page 45: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/45.jpg)
/ 48
Логотип Google
45
![Page 46: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/46.jpg)
/ 48
Логировать все
46
![Page 47: Первое приложение для iPhone](https://reader034.vdocuments.site/reader034/viewer/2022051609/5477b963b4af9fa7608b4c8e/html5/thumbnails/47.jpg)
/ 48
Что и где почитать?
47
• ADD-2010. Никита Фролов. Как начать разрабатывать для iPhone.
• Objective-C 2.0 и программирование для Mac
• iTunes-U. Stanford