SlideShare a Scribd company logo
1 of 48
Download to read offline
Первое приложение
для iPhone
Глеб Тарасов
CUSTIS
Почему мобильная разработка?

2 / 48
Для десктопов сложно что-то придумать

3 / 48
Веб — перепаханное поле

4 / 48
Мобильные приложения — наше всё!

5 / 48
Но надо спешить!

6 / 48
Динамика роста AppStore

7 / 48
Какую мобильную ОС выбрать?

8 / 48
США

9 / 48
Россия

10 / 48
Языки, платформы
iOS

Objective-C

Mac

Windows Phone 7

C#

Win

Android

Java

Win, Mac, Linux

Symbian

C++

Win

Blackberry

Java

Win
11 / 48
Мобильные фреймворки

• jQTouch
• jQuery Mobile
• Sencha Touch
• Xui (не популярен в России)

•
•
•
•

Wink Toolkit
iUI
Dojo Mobile
dHTMLx Touch

http://lib.custis.ru/Мобильная_веб-разработка_(Андрей_Ребров,_ADD-2011)
12 / 48
Компиляция
веб-приложений в нативные

• PhoneGap
• MotherApp
• Big5
• Rhodes
• Titanium
13 / 48
Wunderlist
http://www.6wunderkinder.com/wunderlist/

Titanium

14 / 48
Дзен-мани
http://zenmoney.ru/

PhoneGap
15 / 48
Что нужно для разработки?

16 / 48
Попробовать

•

Хакинтош под виртуальной машиной (устанавливаем Mac OS на
VirtualBox)

•

XCode 4 ($5)

17 / 48
Полноценная разработка

•
•
•

Макинтош
iPhone для тестирования
Подписка разработчика Apple ($99 / год)

18 / 48
Objective-C

19 / 48
История
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
20 / 48
Основные особенности

•
•
•
•

объектно-ориентированный
компилируется в машинный код
полностью совместим с Си
header-файлы

21 / 48
Сравнение с другими языками

•
•
•
•
•
•

Нет статических полей
Нет абстрактных методов и классов
Нет protected методов
Нет generic-ов
Нет namespace-ов
YES/NO вместо true/false. nil вместо null
22 / 48
Сравнение с другими языками

•
•
•
•
•
•

Есть свойства
Есть лямбда-функции
Можно писать без статических проверок на типы
Логичная иерархия коллекций (readonly базовый для mutable)
Именованные параметры методов
Все методы виртуальные
23 / 48
Не вызовы методов, а отправка сообщений
Objective-C

[myObject doSomething:myArgument];

C++

myObject->doSomething(myArgument);

C#, JAVA, Python myObject.doSomething(myArgument);
PHP, Perl

$myObject->doSomething($myArgument);
24 / 48
Непривычный синтаксис
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"]
25 / 48
Зато
C#

Objective-C

a.Process(q, r, t, f)

[a processQuery:q withRadius:r withTime:t callWhenFinish:f]

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

•
•
•
•

счетчик ссылок retainCount
retain: retainCount++
release: retainCount-dealloc, когда retainCount = 0

27 / 48
Model – View – Controller

28 / 48
Демонстрация

29 / 48
Публикация приложения

30 / 48
Регистрация в AppStore

•
•
•
•

Покупаем в Яндекс.Деньги виртуальную карту на 3000 рублей
Заполняем электронную форму регистрации
Отсылаем факс через онлайн-сервис
Ждем подтверждения

31 / 48
Что нужно?

•
•
•
•
•
•
•

Название
Имя приложения в iPhone
Поддерживаемая версия iOS
Выбрать категорию
Иконка
Описание
Скриншоты
32 / 48
iTunes Connect

33 / 48
Продвижение

34 / 48
Полезные советы

35 / 48
Поддержка старых версий iOS

36 / 48
Поддержка iPad,
iPod Touch

37 / 48
Поддержка Retina

38 / 48
Вызов метода,
создание объекта — долго!

39 / 48
Действие

Количество

LLVM

GCC

Вызов ObjectiveC метода

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
40 / 48
Избегать autorelease.
Особенно в цикле.

41 / 48
Все вычисления делать заранее

42 / 48
Обратная связь:
кнопка «написать письмо»

43 / 48
При тестировании приложения удалите его с
телефона и сбросьте настройки

44 / 48
Логотип Google

45 / 48
Логировать все

46 / 48
Что и где почитать?

• ADD-2010. Никита Фролов. Как начать разрабатывать для iPhone.
• Objective-C 2.0 и программирование для Mac
• iTunes-U. Stanford

47 / 48
Все!
gleb34@gmail.com
48 / 48

More Related Content

Viewers also liked

Viewers also liked (17)

Tieu luan so sach ke toan benmark.vn
Tieu luan so sach ke toan benmark.vnTieu luan so sach ke toan benmark.vn
Tieu luan so sach ke toan benmark.vn
 
Kosakata dalam Bahasa Indonesia Hanifah ICP '12 STAIN Salatiga
Kosakata dalam Bahasa Indonesia Hanifah ICP '12 STAIN SalatigaKosakata dalam Bahasa Indonesia Hanifah ICP '12 STAIN Salatiga
Kosakata dalam Bahasa Indonesia Hanifah ICP '12 STAIN Salatiga
 
Equity Analysis
Equity AnalysisEquity Analysis
Equity Analysis
 
Simbolisme Dan Pluralisme
Simbolisme Dan PluralismeSimbolisme Dan Pluralisme
Simbolisme Dan Pluralisme
 
devlopment in financial institutation
devlopment in financial institutationdevlopment in financial institutation
devlopment in financial institutation
 
Lookingglass2
Lookingglass2Lookingglass2
Lookingglass2
 
Antivi
Antivi  Antivi
Antivi
 
Presentation products Swagelok (rus)
Presentation products Swagelok (rus)Presentation products Swagelok (rus)
Presentation products Swagelok (rus)
 
Ham Menurut Iman Kristen
Ham Menurut Iman Kristen Ham Menurut Iman Kristen
Ham Menurut Iman Kristen
 
Tromol besar
Tromol besarTromol besar
Tromol besar
 
An Equity analysis on Indian IT sector
An Equity analysis on Indian IT sector An Equity analysis on Indian IT sector
An Equity analysis on Indian IT sector
 
Development of financial Institution
Development of financial InstitutionDevelopment of financial Institution
Development of financial Institution
 
Project on equity analysis on banking sector
Project on equity analysis on banking sectorProject on equity analysis on banking sector
Project on equity analysis on banking sector
 
A project on equity
A project on equityA project on equity
A project on equity
 
fundamental & technical analysis of selected commodities
fundamental & technical analysis of selected commoditiesfundamental & technical analysis of selected commodities
fundamental & technical analysis of selected commodities
 
Harshad mehta & Ketan Parekh Scam
Harshad mehta & Ketan Parekh ScamHarshad mehta & Ketan Parekh Scam
Harshad mehta & Ketan Parekh Scam
 
Equity analysis
Equity analysisEquity analysis
Equity analysis
 

Similar to Lecture1

Евгений Ртищев "Мобильная платформа на ReactNative"
Евгений Ртищев "Мобильная платформа на ReactNative"Евгений Ртищев "Мобильная платформа на ReactNative"
Евгений Ртищев "Мобильная платформа на ReactNative"IT Event
 
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
 
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...CodeFest
 
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...Mail.ru Group
 
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
 
Windows Phone School HSE Lecture 1
Windows Phone School HSE Lecture 1Windows Phone School HSE Lecture 1
Windows Phone School HSE Lecture 1Dmitry Gridnev
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
 
React Native в продакшне
React Native в продакшнеReact Native в продакшне
React Native в продакшнеEugeni Feudorov
 
Opensource на .NET
Opensource на .NETOpensource на .NET
Opensource на .NETlugnsk
 
Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Andrey Listochkin
 
Статический анализ: ищем ошибки... и уязвимости?
Статический анализ: ищем ошибки... и уязвимости?Статический анализ: ищем ошибки... и уязвимости?
Статический анализ: ищем ошибки... и уязвимости?Andrey Karpov
 
Павел Федотовский «Как мы разрабатывали приложение для DotNetRu на Xamarin.Fo...
Павел Федотовский «Как мы разрабатывали приложение для DotNetRu на Xamarin.Fo...Павел Федотовский «Как мы разрабатывали приложение для DotNetRu на Xamarin.Fo...
Павел Федотовский «Как мы разрабатывали приложение для DotNetRu на Xamarin.Fo...SpbDotNet Community
 
SWIFT нужен ли он вам?
SWIFT нужен ли он вам?SWIFT нужен ли он вам?
SWIFT нужен ли он вам?Improve Group
 
Tdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chaiTdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chaiMichael Chernobrov
 
Convert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at VizorConvert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at VizorDevGAMM Conference
 
Разработка мобильных приложений под iOS
Разработка мобильных приложений под iOSРазработка мобильных приложений под iOS
Разработка мобильных приложений под iOSSCINO
 
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Dima Dzuba
 

Similar to Lecture1 (20)

Lecture1
Lecture1Lecture1
Lecture1
 
Евгений Ртищев "Мобильная платформа на ReactNative"
Евгений Ртищев "Мобильная платформа на ReactNative"Евгений Ртищев "Мобильная платформа на ReactNative"
Евгений Ртищев "Мобильная платформа на ReactNative"
 
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
 
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
 
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
 
SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.
SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.
SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.
 
Windows Phone School HSE Lecture 1
Windows Phone School HSE Lecture 1Windows Phone School HSE Lecture 1
Windows Phone School HSE Lecture 1
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
 
Objective J
Objective JObjective J
Objective J
 
React Native в продакшне
React Native в продакшнеReact Native в продакшне
React Native в продакшне
 
Opensource на .NET
Opensource на .NETOpensource на .NET
Opensource на .NET
 
Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Когда технологий много - iForum 2013
Когда технологий много - iForum 2013
 
Статический анализ: ищем ошибки... и уязвимости?
Статический анализ: ищем ошибки... и уязвимости?Статический анализ: ищем ошибки... и уязвимости?
Статический анализ: ищем ошибки... и уязвимости?
 
Павел Федотовский «Как мы разрабатывали приложение для DotNetRu на Xamarin.Fo...
Павел Федотовский «Как мы разрабатывали приложение для DotNetRu на Xamarin.Fo...Павел Федотовский «Как мы разрабатывали приложение для DotNetRu на Xamarin.Fo...
Павел Федотовский «Как мы разрабатывали приложение для DotNetRu на Xamarin.Fo...
 
SWIFT нужен ли он вам?
SWIFT нужен ли он вам?SWIFT нужен ли он вам?
SWIFT нужен ли он вам?
 
Artem Kumpel, ITmozg, SPIC2011
Artem Kumpel, ITmozg, SPIC2011Artem Kumpel, ITmozg, SPIC2011
Artem Kumpel, ITmozg, SPIC2011
 
Tdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chaiTdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chai
 
Convert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at VizorConvert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at Vizor
 
Разработка мобильных приложений под iOS
Разработка мобильных приложений под iOSРазработка мобильных приложений под iOS
Разработка мобильных приложений под iOS
 
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
 

More from Mikhail Shagiev

More from Mikhail Shagiev (20)

Cont2act
Cont2actCont2act
Cont2act
 
Cardiwear
CardiwearCardiwear
Cardiwear
 
22 Кострома BISдельники
22 Кострома BISдельники22 Кострома BISдельники
22 Кострома BISдельники
 
21 Там где нева
21 Там где нева21 Там где нева
21 Там где нева
 
19 Ростов
19 Ростов19 Ростов
19 Ростов
 
18 Нижний Новгород
18 Нижний Новгород18 Нижний Новгород
18 Нижний Новгород
 
15 Джон Кейс (2)
15 Джон Кейс (2)15 Джон Кейс (2)
15 Джон Кейс (2)
 
12 Новосибирск (2)
12 Новосибирск (2)12 Новосибирск (2)
12 Новосибирск (2)
 
11 САРАНСК RED 5
11 САРАНСК RED 511 САРАНСК RED 5
11 САРАНСК RED 5
 
10 Школьники
10 Школьники10 Школьники
10 Школьники
 
9 ТЕХНОПОКОЛЕНИЕ
9 ТЕХНОПОКОЛЕНИЕ9 ТЕХНОПОКОЛЕНИЕ
9 ТЕХНОПОКОЛЕНИЕ
 
8 владимир
8 владимир8 владимир
8 владимир
 
8 владимир
8 владимир8 владимир
8 владимир
 
7 сидоджи Тверь 7
7 сидоджи Тверь 77 сидоджи Тверь 7
7 сидоджи Тверь 7
 
6 ВсёПоГОСТу - Казань
6 ВсёПоГОСТу - Казань6 ВсёПоГОСТу - Казань
6 ВсёПоГОСТу - Казань
 
4 презентация_2+3
4 презентация_2+34 презентация_2+3
4 презентация_2+3
 
3 великолепная пятерка
3 великолепная пятерка3 великолепная пятерка
3 великолепная пятерка
 
2 ИЖЕВСК
2 ИЖЕВСК2 ИЖЕВСК
2 ИЖЕВСК
 
1 samara
1 samara1 samara
1 samara
 
10
1010
10
 

Lecture1