SlideShare a Scribd company logo
1 of 27
Download to read offline
Почему такая популярность? 
Так или иначе людям хотелось всегда иметь при себе компьютер
Однако 
Задачи,которыедолженрешатьмобильныйкомпьютергораздоболеепростыепосравнениюстеми,чторешаютнаПК,инетребуютбольшихвычислительныхмощностей: 
1.Интернетсерфинг 
2.Просмотрпочты 
3.Обменмгновеннымисообщениямипосети 
имногоедругое
Хотя задачи и простые, но! 
На мобильном устройстве: 
1.Маленький экран 
2.Слабый процессор 
3.Мало памяти 
4.Медленныйинтернет
Почему iOS 
1.Развитая инфраструктура и адекватная документация 
2.Легкость в создании простейших приложений для демонстрации идей 
3.Быстрый симулятор для отладки 
4.Мало разрешений –предсказуемая отладка 
5.Пользователи приучены платить за продукт $$$ 
6.Спорное: Objective –C 
Минус только один –платная подписка (99$) для отладки на устройстве
Основной язык разработки 
Objective-C –немногоистории 
1.Objective-C возникв 80-x какмодификацияС в сторонуSmalltalk. 
2.1988 –NeXT лицензируетObjective-C 
3.1996 –Apple покупаетNeXT и Objective-C становитсяосновнымязыкомразработкиMac OS. IDE длякоданазвалиXcode, а дляGUI – Interface Builder. 
4.2007 —Objective-C —основнойязыкдляiPhone OS 
Интресно, чтомногиебазовыеклассыв Objective-C сохранилипрефиксNS: NeXTSTEP–операционнаясистема, которуюNeXT разрабатываладлясвоихкомпьютеров.
Особенности Objective-C 
1.Объектно-ориентированный 
2.Компилируется в машинный код 
3.Можно писать код на С и С++ (Objective-C++) 
4.Слабо-типизированный 
5.Управление памятью основано на счетчике ссылок (Automatic Reference Count) 
6.Посылка сообщений, вместо прямого присвоения и отсюда почти полная победа над NullPointerException(больше не надо писать 
трехэтажные конструкции if (object != NULL )… )
Среда разработки 
Среда разработки –XCodeпоследней версии (обновляетсядовольно часто). На данный момент это версия 6.1.1. 
Чтобы начать разрабатывать потребуется: 
1.Mac с Mac OS X Yosemite 10.10 
2.Либо Хакинтошна компьютере (проблемы с драйверами) или лучше на виртуалке(образ есть в интернете)
СинтаксисObjective-C 
Файлинтерфейса*.h
Файлреализации*.m
Наследование–черезфайл*.h 
Расширение(Extension) –черезфайл*.m
Инкапсуляция 
файл*.h
Инкапсуляция 
файл*.m 
Protected методовнет!
Инициализация 
Существуетмножествопаттерновпоинициализацииобъекта
Полиморфизм
Протоколы 
Протоколы-этоаналогинтерфейсовв Java илиC#
Реализацияпротокола
Категории 
Позволяютдобавлятьметодыв существующийкласс
Реализацияметодовкатегорий
Типid 
Этооднаизнаиболеесильныхфичв Objective-C 
id –этоуказательнатип, нов отличиеотvoid * онуказываетвсегдаобъект(в терминахObjective-C объектдолжениметьisaуказатель, которыйуказваетнакласс), ноненаслучайныйучастокпамяти
nil 
1.аналогnullиздругихязыков 
2.можновызыватьлюбойметод,небудетисключения 
3.еслиметодвозвращаетобъект–вернетсяnil 
4.еслиметодвозвращаетчисло–вернется0 
5.еслиметодвозвращаетструктуру–результатнеопределен
Управление памятью 
УправлениепамятьювObjective-CосуществляетсяприпомощисчетчикассылокARC(AutomaticReferenceCounter). 
ВотличиеотGarbageCollector,которыйзанимаетсяудалениемобъектоввотдельномпотоке,ARCрасставляетспециальныеметодыдлянаращивания/уменьшениясчетчикассылокконкретногообъекта,освобождаяпрограммистаотнаписанияметодовretain/release.
Как устроен ARC? 
1.послеinitсчетчикссылокравен1 
2.когдаобъектуизменяютзначение–retainновомуобъекту, releaseстарому. 
3.когдавмассивилисловарьдобавляютэлемент,вызываетсяretain
Атрибуты свойств 
atomic 
nonatomic 
strong 
weak 
readwrite 
readonly 
getter= 
setter= 
copy 
assign 
retain 
unsafe_unretained
Рекомендации по стилю кода 
1. Локальныепеременные–myLocalVariable 
2. Свойства–myProperty 
3. Классы–MyClass 
4. Методы–doSomethingWithObject:(MyClass*)object fromObject:(MyClass*)fromObject; 
5. Внутренниепеременные–_myLocalVariable
Куда дальше? 
https://developer.apple.com/library/ios/navigation/ 
АаронХиллегасс“Objective-C”. ПрограммированиедляiOSи Mac OS

More Related Content

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

Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
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
 
Windows Mobile Development with Compact Framework 2
Windows Mobile Development with Compact Framework 2Windows Mobile Development with Compact Framework 2
Windows Mobile Development with Compact Framework 2DarkestMaster
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийПроверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийMedia Gorod
 
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyЧитабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyDmytro Zharii
 
Dz Java Hi Load 0.4
Dz Java Hi Load 0.4Dz Java Hi Load 0.4
Dz Java Hi Load 0.4HighLoad2009
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
Знакомство с WebAssembly
Знакомство с WebAssemblyЗнакомство с WebAssembly
Знакомство с WebAssemblyNikita Zimin
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)Pavel Tsukanov
 
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...Ontico
 
сравнение Mac os x & linux ubuntu
сравнение Mac os x & linux ubuntuсравнение Mac os x & linux ubuntu
сравнение Mac os x & linux ubuntureeds62
 
Client Side Autotesting Flash
Client Side Autotesting FlashClient Side Autotesting Flash
Client Side Autotesting Flashguestb0af15
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализацияYandex
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-AccessSerghei Urban
 
Использование Symfony
Использование SymfonyИспользование Symfony
Использование SymfonyMedia Gorod
 

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

Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
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
 
Lesson 01
Lesson 01Lesson 01
Lesson 01
 
Windows Mobile Development with Compact Framework 2
Windows Mobile Development with Compact Framework 2Windows Mobile Development with Compact Framework 2
Windows Mobile Development with Compact Framework 2
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийПроверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложений
 
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyЧитабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
 
Dz Java Hi Load 0.4
Dz Java Hi Load 0.4Dz Java Hi Load 0.4
Dz Java Hi Load 0.4
 
Net framework
Net frameworkNet framework
Net framework
 
Java 9 - кратко о новом
Java 9 -  кратко о новомJava 9 -  кратко о новом
Java 9 - кратко о новом
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
Знакомство с WebAssembly
Знакомство с WebAssemblyЗнакомство с WebAssembly
Знакомство с WebAssembly
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
 
сравнение Mac os x & linux ubuntu
сравнение Mac os x & linux ubuntuсравнение Mac os x & linux ubuntu
сравнение Mac os x & linux ubuntu
 
Client Side Autotesting Flash
Client Side Autotesting FlashClient Side Autotesting Flash
Client Side Autotesting Flash
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-Access
 
New Android NDK & JNI
New Android NDK & JNINew Android NDK & JNI
New Android NDK & JNI
 
Использование Symfony
Использование SymfonyИспользование Symfony
Использование Symfony
 

More from SCINO

SCINO. Android для начинающих. Занятие 10
SCINO. Android для начинающих. Занятие 10SCINO. Android для начинающих. Занятие 10
SCINO. Android для начинающих. Занятие 10SCINO
 
SCINO.Школа IT-менеджмента. Занятие 5. Управление проектами. Взаимодействие с...
SCINO.Школа IT-менеджмента. Занятие 5. Управление проектами. Взаимодействие с...SCINO.Школа IT-менеджмента. Занятие 5. Управление проектами. Взаимодействие с...
SCINO.Школа IT-менеджмента. Занятие 5. Управление проектами. Взаимодействие с...SCINO
 
SCINO.Школа IT-менеджмента. Занятие 4. Формирование проектной документации
SCINO.Школа IT-менеджмента. Занятие 4. Формирование проектной документацииSCINO.Школа IT-менеджмента. Занятие 4. Формирование проектной документации
SCINO.Школа IT-менеджмента. Занятие 4. Формирование проектной документацииSCINO
 
SCINO.Школа IT-менеджмента. Занятие 3.
SCINO.Школа IT-менеджмента. Занятие 3.SCINO.Школа IT-менеджмента. Занятие 3.
SCINO.Школа IT-менеджмента. Занятие 3.SCINO
 
Scino. Android для начинающих. Занятие 9
Scino. Android для начинающих. Занятие 9Scino. Android для начинающих. Занятие 9
Scino. Android для начинающих. Занятие 9SCINO
 
SCINO. Android для начинающих. Занятие 7
SCINO. Android для начинающих. Занятие 7SCINO. Android для начинающих. Занятие 7
SCINO. Android для начинающих. Занятие 7SCINO
 
Scino.Школа IT-менеджмента. Занятие 2. Управление проектами. Формирование ком...
Scino.Школа IT-менеджмента. Занятие 2. Управление проектами. Формирование ком...Scino.Школа IT-менеджмента. Занятие 2. Управление проектами. Формирование ком...
Scino.Школа IT-менеджмента. Занятие 2. Управление проектами. Формирование ком...SCINO
 
Scino. Android для начинающих. Занятие 6
Scino. Android для начинающих. Занятие 6Scino. Android для начинающих. Занятие 6
Scino. Android для начинающих. Занятие 6SCINO
 
Scino.Школа IT-менеджмента. Управление внутренними проектами
Scino.Школа IT-менеджмента. Управление внутренними проектамиScino.Школа IT-менеджмента. Управление внутренними проектами
Scino.Школа IT-менеджмента. Управление внутренними проектамиSCINO
 
Scino. Android для начинающих. Занятие 5
Scino. Android для начинающих. Занятие 5Scino. Android для начинающих. Занятие 5
Scino. Android для начинающих. Занятие 5SCINO
 
SCINO. Android для начинающих. Занятие 4
SCINO. Android для начинающих. Занятие 4SCINO. Android для начинающих. Занятие 4
SCINO. Android для начинающих. Занятие 4SCINO
 
Scino. android для начинающих. занятие 3
Scino. android для начинающих. занятие 3Scino. android для начинающих. занятие 3
Scino. android для начинающих. занятие 3SCINO
 
Android для начинающих. занятие 2
Android для начинающих. занятие 2Android для начинающих. занятие 2
Android для начинающих. занятие 2SCINO
 
Android для начинающих. занятие 1
Android для начинающих. занятие 1Android для начинающих. занятие 1
Android для начинающих. занятие 1SCINO
 
Курс по разработке игр с использованием технологии Unity. Занятие 1.
Курс по разработке игр с использованием технологии Unity. Занятие 1.Курс по разработке игр с использованием технологии Unity. Занятие 1.
Курс по разработке игр с использованием технологии Unity. Занятие 1.SCINO
 
SCINO: Summer practice. GameDev.
SCINO: Summer practice. GameDev.SCINO: Summer practice. GameDev.
SCINO: Summer practice. GameDev.SCINO
 
Scino: DVCS на примере Git
Scino: DVCS на примере GitScino: DVCS на примере Git
Scino: DVCS на примере GitSCINO
 
Scino: Developing for Windows Phone [part-1]
Scino: Developing for Windows Phone [part-1]Scino: Developing for Windows Phone [part-1]
Scino: Developing for Windows Phone [part-1]SCINO
 
Scino: Front-end [part-1]
Scino: Front-end [part-1]Scino: Front-end [part-1]
Scino: Front-end [part-1]SCINO
 

More from SCINO (19)

SCINO. Android для начинающих. Занятие 10
SCINO. Android для начинающих. Занятие 10SCINO. Android для начинающих. Занятие 10
SCINO. Android для начинающих. Занятие 10
 
SCINO.Школа IT-менеджмента. Занятие 5. Управление проектами. Взаимодействие с...
SCINO.Школа IT-менеджмента. Занятие 5. Управление проектами. Взаимодействие с...SCINO.Школа IT-менеджмента. Занятие 5. Управление проектами. Взаимодействие с...
SCINO.Школа IT-менеджмента. Занятие 5. Управление проектами. Взаимодействие с...
 
SCINO.Школа IT-менеджмента. Занятие 4. Формирование проектной документации
SCINO.Школа IT-менеджмента. Занятие 4. Формирование проектной документацииSCINO.Школа IT-менеджмента. Занятие 4. Формирование проектной документации
SCINO.Школа IT-менеджмента. Занятие 4. Формирование проектной документации
 
SCINO.Школа IT-менеджмента. Занятие 3.
SCINO.Школа IT-менеджмента. Занятие 3.SCINO.Школа IT-менеджмента. Занятие 3.
SCINO.Школа IT-менеджмента. Занятие 3.
 
Scino. Android для начинающих. Занятие 9
Scino. Android для начинающих. Занятие 9Scino. Android для начинающих. Занятие 9
Scino. Android для начинающих. Занятие 9
 
SCINO. Android для начинающих. Занятие 7
SCINO. Android для начинающих. Занятие 7SCINO. Android для начинающих. Занятие 7
SCINO. Android для начинающих. Занятие 7
 
Scino.Школа IT-менеджмента. Занятие 2. Управление проектами. Формирование ком...
Scino.Школа IT-менеджмента. Занятие 2. Управление проектами. Формирование ком...Scino.Школа IT-менеджмента. Занятие 2. Управление проектами. Формирование ком...
Scino.Школа IT-менеджмента. Занятие 2. Управление проектами. Формирование ком...
 
Scino. Android для начинающих. Занятие 6
Scino. Android для начинающих. Занятие 6Scino. Android для начинающих. Занятие 6
Scino. Android для начинающих. Занятие 6
 
Scino.Школа IT-менеджмента. Управление внутренними проектами
Scino.Школа IT-менеджмента. Управление внутренними проектамиScino.Школа IT-менеджмента. Управление внутренними проектами
Scino.Школа IT-менеджмента. Управление внутренними проектами
 
Scino. Android для начинающих. Занятие 5
Scino. Android для начинающих. Занятие 5Scino. Android для начинающих. Занятие 5
Scino. Android для начинающих. Занятие 5
 
SCINO. Android для начинающих. Занятие 4
SCINO. Android для начинающих. Занятие 4SCINO. Android для начинающих. Занятие 4
SCINO. Android для начинающих. Занятие 4
 
Scino. android для начинающих. занятие 3
Scino. android для начинающих. занятие 3Scino. android для начинающих. занятие 3
Scino. android для начинающих. занятие 3
 
Android для начинающих. занятие 2
Android для начинающих. занятие 2Android для начинающих. занятие 2
Android для начинающих. занятие 2
 
Android для начинающих. занятие 1
Android для начинающих. занятие 1Android для начинающих. занятие 1
Android для начинающих. занятие 1
 
Курс по разработке игр с использованием технологии Unity. Занятие 1.
Курс по разработке игр с использованием технологии Unity. Занятие 1.Курс по разработке игр с использованием технологии Unity. Занятие 1.
Курс по разработке игр с использованием технологии Unity. Занятие 1.
 
SCINO: Summer practice. GameDev.
SCINO: Summer practice. GameDev.SCINO: Summer practice. GameDev.
SCINO: Summer practice. GameDev.
 
Scino: DVCS на примере Git
Scino: DVCS на примере GitScino: DVCS на примере Git
Scino: DVCS на примере Git
 
Scino: Developing for Windows Phone [part-1]
Scino: Developing for Windows Phone [part-1]Scino: Developing for Windows Phone [part-1]
Scino: Developing for Windows Phone [part-1]
 
Scino: Front-end [part-1]
Scino: Front-end [part-1]Scino: Front-end [part-1]
Scino: Front-end [part-1]
 

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