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                                               •   Wink Toolkit

• jQuery Mobile                                         •   iUI

• Sencha Touch                                          •   Dojo Mobile

• Xui (не популярен в России)                           •   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

Вызов Objective-
                    10’000’000   1 сек.          0.9 сек
   C метода

Вызов 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

Similar to Первое приложение для iPhone

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
 
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
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Pavel Tsukanov
 
Опыт тестирования API САПР платформы
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформыSQALab
 
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...CodeFest
 
Автоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовАвтоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовSergey Borisov
 
[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
 
METRO. Дизайн для Windows Phone
METRO. Дизайн для Windows PhoneMETRO. Дизайн для Windows Phone
METRO. Дизайн для Windows PhoneNikita Lukianets
 
Windows Phone School HSE Lecture 1
Windows Phone School HSE Lecture 1Windows Phone School HSE Lecture 1
Windows Phone School HSE Lecture 1Dmitry Gridnev
 
Проектирование программных систем. Занятие 9
Проектирование программных систем. Занятие 9Проектирование программных систем. Занятие 9
Проектирование программных систем. Занятие 9Dima Dzuba
 
Масштабируемые кроссплатформенные веб-приложения / Илья Пухальский (Epam)
Масштабируемые кроссплатформенные веб-приложения / Илья Пухальский (Epam)Масштабируемые кроссплатформенные веб-приложения / Илья Пухальский (Epam)
Масштабируемые кроссплатформенные веб-приложения / Илья Пухальский (Epam)Ontico
 
Разработка мобильных приложений под iOS
Разработка мобильных приложений под iOSРазработка мобильных приложений под iOS
Разработка мобильных приложений под iOSSCINO
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
 

Similar to Первое приложение для iPhone (20)

Lecture1
Lecture1Lecture1
Lecture1
 
Lecture1
Lecture1Lecture1
Lecture1
 
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.
 
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
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)
 
Опыт тестирования API САПР платформы
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформы
 
[Add 4] crossplatform .net
[Add 4] crossplatform .net[Add 4] crossplatform .net
[Add 4] crossplatform .net
 
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
 
Objective J
Objective JObjective J
Objective J
 
Автоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовАвтоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотов
 
[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)
 
METRO. Дизайн для Windows Phone
METRO. Дизайн для Windows PhoneMETRO. Дизайн для Windows Phone
METRO. Дизайн для Windows Phone
 
Windows Phone School HSE Lecture 1
Windows Phone School HSE Lecture 1Windows Phone School HSE Lecture 1
Windows Phone School HSE Lecture 1
 
Проектирование программных систем. Занятие 9
Проектирование программных систем. Занятие 9Проектирование программных систем. Занятие 9
Проектирование программных систем. Занятие 9
 
Масштабируемые кроссплатформенные веб-приложения / Илья Пухальский (Epam)
Масштабируемые кроссплатформенные веб-приложения / Илья Пухальский (Epam)Масштабируемые кроссплатформенные веб-приложения / Илья Пухальский (Epam)
Масштабируемые кроссплатформенные веб-приложения / Илья Пухальский (Epam)
 
Разработка мобильных приложений под iOS
Разработка мобильных приложений под iOSРазработка мобильных приложений под iOS
Разработка мобильных приложений под iOS
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
 

More from Глеб Тарасов

Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...
Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...
Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...Глеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPadИнтуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPadГлеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейсИнтуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейсГлеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 8. Работа с данными
Интуит. Разработка приложений для iOS. Лекция 8. Работа с даннымиИнтуит. Разработка приложений для iOS. Лекция 8. Работа с данными
Интуит. Разработка приложений для iOS. Лекция 8. Работа с даннымиГлеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетьюИнтуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетьюГлеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 4. Controllers
Интуит. Разработка приложений для iOS. Лекция 4. ControllersИнтуит. Разработка приложений для iOS. Лекция 4. Controllers
Интуит. Разработка приложений для iOS. Лекция 4. ControllersГлеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. ViewsИнтуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. ViewsГлеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 2. Objective-C
Интуит. Разработка приложений для iOS. Лекция 2. Objective-CИнтуит. Разработка приложений для iOS. Лекция 2. Objective-C
Интуит. Разработка приложений для iOS. Лекция 2. Objective-CГлеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.
Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.
Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.Глеб Тарасов
 
Презентация проекта Ulect
Презентация проекта Ulect Презентация проекта Ulect
Презентация проекта Ulect Глеб Тарасов
 
Презентация для Foundation Institute
Презентация для Foundation InstituteПрезентация для Foundation Institute
Презентация для Foundation InstituteГлеб Тарасов
 
Делаем жизнь лучше с CocoaPods
Делаем жизнь лучше с CocoaPodsДелаем жизнь лучше с CocoaPods
Делаем жизнь лучше с CocoaPodsГлеб Тарасов
 
Школа-Студия разработки приложений для iOS. 5 лекция. Разное
Школа-Студия разработки приложений для iOS. 5 лекция. РазноеШкола-Студия разработки приложений для iOS. 5 лекция. Разное
Школа-Студия разработки приложений для iOS. 5 лекция. РазноеГлеб Тарасов
 
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжениеШкола-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжениеГлеб Тарасов
 
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersГлеб Тарасов
 
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CШкола-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CГлеб Тарасов
 
Глеб Тарасов. Портфолио
Глеб Тарасов. ПортфолиоГлеб Тарасов. Портфолио
Глеб Тарасов. ПортфолиоГлеб Тарасов
 

More from Глеб Тарасов (20)

Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...
Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...
Интуит. Разработка приложений для iOS. Лекция 11. Расширенные возможности уст...
 
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPadИнтуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
Интуит. Разработка приложений для iOS. Лекция 10. Поддержка iPad
 
Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейсИнтуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
Интуит. Разработка приложений для iOS. Лекция 9. Нестандартный интерфейс
 
Интуит. Разработка приложений для iOS. Лекция 8. Работа с данными
Интуит. Разработка приложений для iOS. Лекция 8. Работа с даннымиИнтуит. Разработка приложений для iOS. Лекция 8. Работа с данными
Интуит. Разработка приложений для iOS. Лекция 8. Работа с данными
 
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетьюИнтуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
 
Интуит. Разработка приложений для iOS. Лекция 4. Controllers
Интуит. Разработка приложений для iOS. Лекция 4. ControllersИнтуит. Разработка приложений для iOS. Лекция 4. Controllers
Интуит. Разработка приложений для iOS. Лекция 4. Controllers
 
Интуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. ViewsИнтуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. Views
 
Интуит. Разработка приложений для iOS. Лекция 2. Objective-C
Интуит. Разработка приложений для iOS. Лекция 2. Objective-CИнтуит. Разработка приложений для iOS. Лекция 2. Objective-C
Интуит. Разработка приложений для iOS. Лекция 2. Objective-C
 
Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.
Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.
Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.
 
Презентация проекта Ulect
Презентация проекта Ulect Презентация проекта Ulect
Презентация проекта Ulect
 
Презентация для Foundation Institute
Презентация для Foundation InstituteПрезентация для Foundation Institute
Презентация для Foundation Institute
 
Делаем жизнь лучше с CocoaPods
Делаем жизнь лучше с CocoaPodsДелаем жизнь лучше с CocoaPods
Делаем жизнь лучше с CocoaPods
 
msumobi2. Лекция 2
msumobi2. Лекция 2msumobi2. Лекция 2
msumobi2. Лекция 2
 
msumobi2. Лекция 1
msumobi2. Лекция 1msumobi2. Лекция 1
msumobi2. Лекция 1
 
Школа-Студия разработки приложений для iOS. 5 лекция. Разное
Школа-Студия разработки приложений для iOS. 5 лекция. РазноеШкола-Студия разработки приложений для iOS. 5 лекция. Разное
Школа-Студия разработки приложений для iOS. 5 лекция. Разное
 
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжениеШкола-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
 
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
 
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CШкола-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
 
ShareKit. Evernote Dev Meetup
ShareKit. Evernote Dev MeetupShareKit. Evernote Dev Meetup
ShareKit. Evernote Dev Meetup
 
Глеб Тарасов. Портфолио
Глеб Тарасов. ПортфолиоГлеб Тарасов. Портфолио
Глеб Тарасов. Портфолио
 

Первое приложение для iPhone