SlideShare a Scribd company logo
1 of 48
Download to read offline
Первое приложение 
для iPhone 
Глеб Тарасов 
CUSTIS
/ 48 
Почему мобильная разработка? 
2
/ 48 
Для десктопов сложно что-то придумать 
3
/ 48 
Веб — перепаханное поле 
4
/ 48 
Мобильные приложения — наше всё! 
5
/ 48 
Но надо спешить! 
6
/ 48 
Динамика роста AppStore 
7
/ 48 
Какую мобильную ОС выбрать? 
8
/ 48 
США 
9
/ 48 
Россия 
10
/ 48 
Языки, платформы 
11 
iOS Objective-C Mac 
Windows Phone 7 C# Win 
Android Java Win, Mac, Linux 
Symbian C++ Win 
Blackberry Java Win
/ 48 
Мобильные фреймворки 
12 
• Wink Toolkit 
• iUI 
• Dojo Mobile 
• dHTMLx Touch 
• jQTouch 
• jQuery Mobile 
• Sencha Touch 
• Xui (не популярен в России) 
http://lib.custis.ru/Мобильная_веб-разработка_(Андрей_Ребров,_ADD-2011)
/ 48 
Компиляция 
веб-приложений в нативные 
13 
• PhoneGap 
• MotherApp 
• Big5 
• Rhodes 
• Titanium
/ 48 
Wunderlist 
14 
Titanium 
http://www.6wunderkinder.com/wunderlist/
/ 48 
Дзен-мани 
15 
http://zenmoney.ru/ 
PhoneGap
/ 48 
Что нужно для разработки? 
16
/ 48 
Попробовать 
17 
• Хакинтош под виртуальной машиной (устанавливаем Mac OS на 
VirtualBox) 
• XCode 4 ($5)
/ 48 
Полноценная разработка 
18 
• Макинтош 
• iPhone для тестирования 
• Подписка разработчика Apple ($99 / год)
/ 48 
Objective-C 
19
/ 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
/ 48 
Основные особенности 
21 
• объектно-ориентированный 
• компилируется в машинный код 
• полностью совместим с Си 
• header-файлы
/ 48 
Сравнение с другими языками 
22 
• Нет статических полей 
• Нет абстрактных методов и классов 
• Нет protected методов 
• Нет generic-ов 
• Нет namespace-ов 
• YES/NO вместо true/false. nil вместо null
/ 48 
Сравнение с другими языками 
23 
• Есть свойства 
• Есть лямбда-функции 
• Можно писать без статических проверок на типы 
• Логичная иерархия коллекций (readonly базовый для mutable) 
• Именованные параметры методов 
• Все методы виртуальные
/ 48 
Не вызовы методов, а отправка сообщений 
24 
Objective-C [myObject doSomething:myArgument]; 
C++ myObject->doSomething(myArgument); 
C#, JAVA, Python myObject.doSomething(myArgument); 
PHP, Perl $myObject->doSomething($myArgument);
/ 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"]
/ 48 
Зато 
26 
C# Objective-C 
a.Process(q, r, t, f) [a processQuery:q withRadius:r withTime:t callWhenFinish:f]
/ 48 
Управление памятью 
27 
• счетчик ссылок retainCount 
• retain: retainCount++ 
• release: retainCount-- 
• dealloc, когда retainCount = 0
/ 48 
Model – View – Controller 
28
/ 48 
Демонстрация 
29
/ 48 
Публикация приложения 
30
/ 48 
Регистрация в AppStore 
31 
• Покупаем в Яндекс.Деньги виртуальную карту на 3000 рублей 
• Заполняем электронную форму регистрации 
• Отсылаем факс через онлайн-сервис 
• Ждем подтверждения
/ 48 
Что нужно? 
32 
• Название 
• Имя приложения в iPhone 
• Поддерживаемая версия iOS 
• Выбрать категорию 
• Иконка 
• Описание 
• Скриншоты
/ 48 
iTunes Connect 
33
/ 48 
Продвижение 
34
/ 48 
Полезные советы 
35
/ 48 
Поддержка старых версий iOS 
36
/ 48 
Поддержка iPad, 
iPod Touch 
37
/ 48 
Поддержка Retina 
38
/ 48 
Вызов метода, 
создание объекта — долго! 
39
40 / 48 
Действие Количество 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
/ 48 
Избегать autorelease. 
Особенно в цикле. 
41
/ 48 
Все вычисления делать заранее 
42
/ 48 
Обратная связь: 
кнопка «написать письмо» 
43
/ 48 
При тестировании приложения удалите его с 
телефона и сбросьте настройки 
44
/ 48 
Логотип Google 
45
/ 48 
Логировать все 
46
/ 48 
Что и где почитать? 
47 
• ADD-2010. Никита Фролов. Как начать разрабатывать для iPhone. 
• Objective-C 2.0 и программирование для Mac 
• iTunes-U. Stanford
/ 48 
Все! 
48 
gleb34@gmail.com

More Related Content

Similar to Lecture1

SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.
SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.
SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.SECON
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Разработка мобильных приложений под iOS
Разработка мобильных приложений под iOSРазработка мобильных приложений под iOS
Разработка мобильных приложений под iOSSCINO
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012InTRUEdeR
 
Опыт тестирования API САПР платформы
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформыSQALab
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоStanfy
 
Hardware Talk, sep20 (IT Park, Innopolis, Kazan)
Hardware Talk, sep20 (IT Park, Innopolis, Kazan)Hardware Talk, sep20 (IT Park, Innopolis, Kazan)
Hardware Talk, sep20 (IT Park, Innopolis, Kazan)Yury Chernushenko
 
Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Pavel Tsukanov
 
Windows Phone School HSE Lecture 1
Windows Phone School HSE Lecture 1Windows Phone School HSE Lecture 1
Windows Phone School HSE Lecture 1Dmitry Gridnev
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...Yandex
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...Yandex
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Yandex
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»MskDotNet Community
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Yulia Tsisyk
 
[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)Alexander Bausk
 

Similar to Lecture1 (20)

Lecture1
Lecture1Lecture1
Lecture1
 
SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.
SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.
SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Разработка мобильных приложений под iOS
Разработка мобильных приложений под iOSРазработка мобильных приложений под iOS
Разработка мобильных приложений под iOS
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012
 
Опыт тестирования API САПР платформы
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформы
 
[Add 4] crossplatform .net
[Add 4] crossplatform .net[Add 4] crossplatform .net
[Add 4] crossplatform .net
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
Hardware Talk, sep20 (IT Park, Innopolis, Kazan)
Hardware Talk, sep20 (IT Park, Innopolis, Kazan)Hardware Talk, sep20 (IT Park, Innopolis, Kazan)
Hardware Talk, sep20 (IT Park, Innopolis, Kazan)
 
Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)
 
UI+unit testing in iOS
UI+unit testing in iOSUI+unit testing in iOS
UI+unit testing in iOS
 
Windows Phone School HSE Lecture 1
Windows Phone School HSE Lecture 1Windows Phone School HSE Lecture 1
Windows Phone School HSE Lecture 1
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
 
[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)
 

Lecture1

  • 1. Первое приложение для iPhone Глеб Тарасов CUSTIS
  • 2. / 48 Почему мобильная разработка? 2
  • 3. / 48 Для десктопов сложно что-то придумать 3
  • 4. / 48 Веб — перепаханное поле 4
  • 5. / 48 Мобильные приложения — наше всё! 5
  • 6. / 48 Но надо спешить! 6
  • 7. / 48 Динамика роста AppStore 7
  • 8. / 48 Какую мобильную ОС выбрать? 8
  • 11. / 48 Языки, платформы 11 iOS Objective-C Mac Windows Phone 7 C# Win Android Java Win, Mac, Linux Symbian C++ Win Blackberry Java Win
  • 12. / 48 Мобильные фреймворки 12 • Wink Toolkit • iUI • Dojo Mobile • dHTMLx Touch • jQTouch • jQuery Mobile • Sencha Touch • Xui (не популярен в России) http://lib.custis.ru/Мобильная_веб-разработка_(Андрей_Ребров,_ADD-2011)
  • 13. / 48 Компиляция веб-приложений в нативные 13 • PhoneGap • MotherApp • Big5 • Rhodes • Titanium
  • 14. / 48 Wunderlist 14 Titanium http://www.6wunderkinder.com/wunderlist/
  • 15. / 48 Дзен-мани 15 http://zenmoney.ru/ PhoneGap
  • 16. / 48 Что нужно для разработки? 16
  • 17. / 48 Попробовать 17 • Хакинтош под виртуальной машиной (устанавливаем Mac OS на VirtualBox) • XCode 4 ($5)
  • 18. / 48 Полноценная разработка 18 • Макинтош • iPhone для тестирования • Подписка разработчика Apple ($99 / год)
  • 20. / 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
  • 21. / 48 Основные особенности 21 • объектно-ориентированный • компилируется в машинный код • полностью совместим с Си • header-файлы
  • 22. / 48 Сравнение с другими языками 22 • Нет статических полей • Нет абстрактных методов и классов • Нет protected методов • Нет generic-ов • Нет namespace-ов • YES/NO вместо true/false. nil вместо null
  • 23. / 48 Сравнение с другими языками 23 • Есть свойства • Есть лямбда-функции • Можно писать без статических проверок на типы • Логичная иерархия коллекций (readonly базовый для mutable) • Именованные параметры методов • Все методы виртуальные
  • 24. / 48 Не вызовы методов, а отправка сообщений 24 Objective-C [myObject doSomething:myArgument]; C++ myObject->doSomething(myArgument); C#, JAVA, Python myObject.doSomething(myArgument); PHP, Perl $myObject->doSomething($myArgument);
  • 25. / 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"]
  • 26. / 48 Зато 26 C# Objective-C a.Process(q, r, t, f) [a processQuery:q withRadius:r withTime:t callWhenFinish:f]
  • 27. / 48 Управление памятью 27 • счетчик ссылок retainCount • retain: retainCount++ • release: retainCount-- • dealloc, когда retainCount = 0
  • 28. / 48 Model – View – Controller 28
  • 30. / 48 Публикация приложения 30
  • 31. / 48 Регистрация в AppStore 31 • Покупаем в Яндекс.Деньги виртуальную карту на 3000 рублей • Заполняем электронную форму регистрации • Отсылаем факс через онлайн-сервис • Ждем подтверждения
  • 32. / 48 Что нужно? 32 • Название • Имя приложения в iPhone • Поддерживаемая версия iOS • Выбрать категорию • Иконка • Описание • Скриншоты
  • 33. / 48 iTunes Connect 33
  • 35. / 48 Полезные советы 35
  • 36. / 48 Поддержка старых версий iOS 36
  • 37. / 48 Поддержка iPad, iPod Touch 37
  • 39. / 48 Вызов метода, создание объекта — долго! 39
  • 40. 40 / 48 Действие Количество 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
  • 41. / 48 Избегать autorelease. Особенно в цикле. 41
  • 42. / 48 Все вычисления делать заранее 42
  • 43. / 48 Обратная связь: кнопка «написать письмо» 43
  • 44. / 48 При тестировании приложения удалите его с телефона и сбросьте настройки 44
  • 45. / 48 Логотип Google 45
  • 47. / 48 Что и где почитать? 47 • ADD-2010. Никита Фролов. Как начать разрабатывать для iPhone. • Objective-C 2.0 и программирование для Mac • iTunes-U. Stanford
  • 48. / 48 Все! 48 gleb34@gmail.com