Download - Введение в разработку для iOS
![Page 1: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/1.jpg)
Введение в разработку мобильных приложений для iOSДударев Михаил, Mihteh Lab.
![Page 2: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/2.jpg)
![Page 3: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/3.jpg)
![Page 4: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/4.jpg)
iPhone
![Page 5: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/5.jpg)
![Page 6: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/6.jpg)
2014
2014
2013
2013
2012
2011
2010
2009
2008
2007
![Page 7: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/7.jpg)
6+ (2
014)
6 (20
14)
5S (2
013)
5C (2
013)
5 (20
12)
4S (2
011)
4 (20
10)
3GS (2
009)
3G (2
008)
2G (2
007)
2015
![Page 8: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/8.jpg)
25,71
51,43
77,14
102,86
128,57
154,29
180
2007 2008 2009 2010 2011 2012 2013 2014
169,22
150,26
125,05
72,29
39,99
20,7311,63
1,39
Продажи iPhone по всему мирумлн. единиц
© Statista, 2015Источник: Apple
![Page 9: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/9.jpg)
Фрагментация моделей устройств на Android
Источник: OpenSignal, 2014
18769 устройств
![Page 10: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/10.jpg)
4S (2
011)
5 (20
12)
5S (2
013)
5C (2
013)
6 (20
14)
6+ (2
014)
Так или иначе поддерживают iOS 8Актуальные модели iPhone
![Page 11: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/11.jpg)
iPad
![Page 12: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/12.jpg)
2 (20
11)
3rd G
en.
(2012
)Mini
(2012
)4th
Gen
.
(2012
)Air
(2013
)Mini
2
(2013
)Air 2
(2014
)Mini
3
(2014
)
Так или иначе поддерживают iOS 8Актуальные модели
![Page 13: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/13.jpg)
Доля рынка iPad по всему миру
Источник: IDC, 2015
Другие 66,2%
iPad 33,8%
Другие 72,4%
iPad 27,6%
2013 2014
![Page 14: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/14.jpg)
iOS
![Page 15: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/15.jpg)
iOS ~ iPhone Operating System
![Page 16: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/16.jpg)
![Page 17: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/17.jpg)
2007
2014
2008 20
0920
1020
1120
1220
1320
15
• iCloud• ARC• Storyboards• Core Image• Core Bluetooth
• Auto-Layout• In-App Purchase• Collection Views
• UI Redesign• 64 bit• P2P
• Swift• CloudKit• TestFlight• Extensions• Handoff• HealthKit• WatchKit
![Page 18: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/18.jpg)
Официальные данныепо состоянию на 02.02.2015
Источники: Apple
iOS
![Page 19: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/19.jpg)
Официальные данныепо состоянию на 02.02.2015
5.0
4.44.3
4.2.x
4.1.x4.0.3-4.0.42.2-2.3.7
Источники: Apple, Google
iOS Android
![Page 20: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/20.jpg)
10
20
30
40
50
60
70
80
90
100
3Q '11 3Q '12 3Q '13 3Q '14
27,6 8,6 2,3
1,2
2
3,6
2,9
13,8
14,412,8 11,7
57,4
74,981,2 84,4
Доля iOS на рынке мобильных ОС% от количества проданных устройств
Android
iOSДругие
Источник: IDC
![Page 21: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/21.jpg)
App Store
![Page 22: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/22.jpg)
200 000
400 000
600 000
800 000
1 000 000
1 200 000
1 400 000
Июль
2008
Сентябрь
2008
Апрель
2009
Июль
2009
Ноябрь
2009
Март
2010
Июнь
2010
Октябрь 2
010
Январь
2011
Июнь
2011
Октябрь 2
011
Март
2012
Июнь
2012
Сентябрь
2012
Январь
2013
Май 2
013
Июнь
2013
Октябрь 2
013
Июнь
2014
Сентябрь
2014
800 3 00035 00065 000100 000150 000
225 000300 000
350 000425 000
500 000585 000
650 000700 000
800 000850 000
900 000
1 000 000
1 200 000
1 300 000
Общее количество доступных приложений на сентябрь 2014
© Statista, 2015Источник: Apple
![Page 23: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/23.jpg)
10
20
30
40
50
60
70
80
90
Июль
2008
Сентябрь
2008
Апрель
2009
Июль
2009
Январь
2010
Апрель
2010
Июль
2010
Сентябрь
2010
Октябрь 2
010
Январь
2011
Июнь
2011
Июль
2011
Октябрь 2
011
Март
2012
Июнь
2012
Сентябрь
2012
Январь
2013
Май 2
013
Октябрь 2
013
Январь
2014
Октябрь 2
014
0,01 0,1 1 1,5 3 4 5 6,5 710
14 1518
2530
3540
50
60
75
85
Общее количество загрузок приложений из App Storeпо состоянию на октябрь 2014, млрд. единиц
© Statista, 2015Источники: Apple, TechCrunch
![Page 24: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/24.jpg)
GamesEducationBusinessLifestyle
EntertainmentUtilitiesTravelBooksMusic
ProductivityHealth and Fitness
SportsReference
Photo and VideoNews
FinanceFood and Drink
MedicalSocial Networking
Navigation
0 2,2 4,4 6,6 8,8 11 13,2 15,4 17,6 19,8 22 1,2
2,0 2,1 2,3 2,4 2,4 2,5 2,5 2,7 2,7 2,8 3,1
4,0 4,6
5,1 6,9
8,2 9,9 10,1
21,1
Самые популярные категории в App Store, январь 2015
© Statista, 2015
%, подсчитанный от количества приложений
Источник: PocketGamer.biz
![Page 25: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/25.jpg)
Базовый инструментарий
![Page 26: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/26.jpg)
Любой компьютер Mac
Среда разработки Xcode
Комплект средств разработки для iOS (SDK)
Опционально: iPhone / iPad / iPod Touch
Базовый инструментарий
![Page 27: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/27.jpg)
Любой компьютер Mac
![Page 28: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/28.jpg)
Любой компьютер Mac
![Page 29: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/29.jpg)
Любой компьютер Mac
![Page 30: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/30.jpg)
Любой компьютер Mac
![Page 31: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/31.jpg)
Хакинтош?Не рекомендуется
![Page 32: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/32.jpg)
RubyMotion Xamarin PhoneGap / CordovaXcode
![Page 33: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/33.jpg)
RubyMotion Xamarin PhoneGap / CordovaXcode
Ruby C# HTML/CSS/JSObjC/Swift
$15-25в месяц
$25-83в месяц
БесплатноБесплатно
![Page 34: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/34.jpg)
Native App Web App
![Page 35: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/35.jpg)
Среда разработки Xcode
![Page 36: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/36.jpg)
Xcode
Simulator
Interface Builder
Instruments
![Page 37: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/37.jpg)
Работа с кодом
![Page 38: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/38.jpg)
Interface Builder
![Page 39: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/39.jpg)
Связывание элементов интерфейса с кодом
![Page 40: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/40.jpg)
Storyboards
![Page 41: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/41.jpg)
Autolayout
NSLayoutConstraint
![Page 42: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/42.jpg)
Интеграция с системой контроля версий (GIT)
![Page 43: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/43.jpg)
Unit-тестирование
![Page 44: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/44.jpg)
Continuous Integration
![Page 45: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/45.jpg)
Simulator
Resizable
Fixed
![Page 46: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/46.jpg)
Средства отладки
Точка остановки
Потребляемы
е ресурсы
, потоки
Значения переменных, отладочная консоль
![Page 47: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/47.jpg)
Инструменты Xcode
![Page 48: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/48.jpg)
AppCode?Сперва попробуйте Xcode
![Page 49: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/49.jpg)
Размеры и разрешение экранов
![Page 50: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/50.jpg)
Фрагментация размеров экранов устройств на Android
Источник: OpenSignal, 2014
![Page 51: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/51.jpg)
![Page 52: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/52.jpg)
3.5 дюйма 4 дюйма 4.7 дюйма 5.5 дюйма
640×960пикселей
640×1136пикселей
750×1334пикселей
1242×2208*пикселей
320×480точек
320×568точек
375×667точек
414×736точек
@2x @2x @2x @3x
![Page 53: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/53.jpg)
1242×2208*пикселей
5.5 дюйма414×736точек@3x
виртуальное разрешение
дисплея
iPhone 6 Plus
![Page 54: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/54.jpg)
1242×2208*пикселей
1080×1920пикселей
5.5 дюйма414×736точек@3x
физическоеразрешениедисплея
виртуальное разрешение
дисплея
iPhone 6 Plus
![Page 55: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/55.jpg)
Графические активы @1x, @2x, @3x
![Page 56: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/56.jpg)
7.9 дюйма 9.7 дюйма 7.9 дюйма 9.7 дюйма
768×1024пикселей
768×1024пикселей
1536×2048пикселей
1536×2048*пикселей
768×1024точек
768×1024точек
768×1024точек
768×1024точек
@1x @1x @2x @2x
![Page 57: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/57.jpg)
Языки программирования
![Page 58: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/58.jpg)
Objective-C
![Page 59: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/59.jpg)
Objective-C
Появился в 1983 году под влиянием Smalltalk
Объектно-ориентированное расширение языка C
Используется преимущественно в разработке для Mac и iOS
Впервые серьезно был использован в 1988 году для ОС NextStep
Вызов метода = отправка сообщения объекту
[receiver message];
Сообщения могут перенаправляться другим объектам
Актуальной на сегодня является версия Objective-C 2.0
Нередко критикуется за синтаксис и многословность
Все объекты передаются по указателю
NSObject *object = [[NSObject alloc] init];
![Page 60: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/60.jpg)
#import <Foundation/Foundation.h> @interface Person : NSObject @property NSString *name; - (void)sayHelloWithName:(NSString *)name; @end
#import “Person.h" @implementation Person - (void)sayHelloWithName:(NSString *)name { NSLog(@"Hello, %@! My name is %@.", name, self.name); } @end
Пример кода
#import “Person.h" … Person *person = [[Person alloc] init]; person.name = @"Mikhail"; [person sayHelloWithName:@“GDG"]; …
![Page 61: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/61.jpg)
Swift
![Page 62: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/62.jpg)
Swift
Был представлен в июне 2014 года на конференции WWDC
Может использоваться в комбинации с Objective-C, C и C++
Допускает как ООП, так и функциональное программирование
Актуальной на сегодня версией является 1.1
Значительно более лаконичен, чем Objective-C
Полностью совместим со всеми фреймворками из iOS SDK
Строго типизированный язык
Переменные обязательно должны быть инициализированы
Поддерживает обобщенное программирование, типизированные коллекции, перегрузку операторов, выведение типов и др.
![Page 63: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/63.jpg)
import UIKit
class Person : NSObject {
let name : NSString init(name : NSString) { self.name = name super.init() } func sayHelloWithName(NSString) { NSLog("Hello, \(name)! My name is \(self.name).") } }
Пример кода
… let person = Person(name: "Mikhail") person.sayHelloWithName("GDG") …
![Page 64: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/64.jpg)
#import <Foundation/Foundation.h> @property NSString *name; @interface Person : NSObject - (void)sayHelloWithName:(NSString *)name; @end
#import “Person.h" @implementation Person - (void)sayHelloWithName:(NSString *)name { NSLog(@"Hello, %@! My name is %@.”, name, self.name); } @end
#import “Person.h" … Person *person = [[Person alloc] init]; person.name = @"Mikhail"; [person sayHelloWithName:@“GDG"]; …
Objective-C
import UIKit
class Person : NSObject { let name : NSString init(name : NSString) { self.name = name super.init() } func sayHelloWithName(NSString) { NSLog("Hello, \(name)! My name is \(self.name).") } }
… let person = Person(name: "Mikhail") person.sayHelloWithName("GDG") …
Swift
![Page 65: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/65.jpg)
Swift + Objective-Cв рамках одного проекта
![Page 66: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/66.jpg)
Правило #1:Внутри одного файла языки не смешиваются
Правило #2:Имена классов не должны совпадать
![Page 67: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/67.jpg)
Импорт из Swift в Objective-C
Используется автоматически генерируемый заголовок#import "Project-Bridging-Header.h"
В данный заголовок попадают классы или протоколы Swift, наследуемые от NSObject или специально отмеченные @objc
Некоторые элементы нельзя экспортировать, например:• Дженерики• Кортежи• Enums• Структуры• Функции высшего порядка• Глобальные переменные
Не рекомендуется импортировать Swift в заголовки .h Objective-c,так как это может привести к зацикливанию. Используйте @class.
![Page 68: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/68.jpg)
Импорт из Objective-C в Swift
Используется редактируемый вручную Objective-C Bridging Header
Прописанные в нем заголовки становятся доступны в Swift-файлах
В Build Settings > Swift Compiler > Code Generation > Objective-C Bridging Header должен быть правильно указан путь к файлу
Самостоятельно указывать директиву импорта не нужно
![Page 69: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/69.jpg)
Резюме
![Page 70: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/70.jpg)
iOS Software Development Kit (SDK)
![Page 71: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/71.jpg)
Cocoa Touch
Core Services
Core OS
Media
Hardware
![Page 72: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/72.jpg)
Интерфейс и взаимодействиес пользователем
Графика, аудио и видео
Фундаментальныеклассы и сервисы
Системныйуровень
Cocoa Touch
Core Services
Core OS
Media
HardwareHardware
![Page 73: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/73.jpg)
Cocoa Touch
Core Services
Core OS
Media
Hardware
![Page 74: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/74.jpg)
Core ServicesCore OS
Media
Распознавание жестов (UIGestureRecognizer и подклассы)
Стандартные виды (UILabel, UIButton, UITextView и др.)Средства для проектирования UI (Storyboards, Auto Layout)
Системные контроллеры видов (Message UI, EventKit UI и др.)
Локальные и Push-уведомленияМногозадачность ОС (разрешения на работу в фоне)
Стандартные контроллеры (UINavigationViewController и др.)Фреймворки UIKit, MapKit, Message UI, Address Book UI и др.
Cocoa Touch
![Page 75: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/75.jpg)
Cocoa Touch
Core Services
Core OS
Media
Hardware
![Page 76: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/76.jpg)
Cocoa Touch
Core Services
Core OS
Media
Hardware
![Page 77: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/77.jpg)
Core ServicesCore OS
ГрафикаCore Graphics, Quartz Core, Core TextSceneKit, SpriteKit, OpenGL ES, GLKit, MetalPhotos, Core ImageАудиоMedia Player, AV Foundation, OpenAL, Core AudioВидеоAVKit, AV Foundation, Core Video
MediaCocoa Touch
![Page 78: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/78.jpg)
Cocoa Touch
Core Services
Core OS
Media
![Page 79: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/79.jpg)
Cocoa Touch
Core Services
Core OS
Media
Hardware
![Page 80: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/80.jpg)
Core Services
Core OS
MediaCocoa Touch
Коллекции (NSArray, NSDictionary, NSSet и др.)Различные сервисы (Core Location, Core Motion, CloudKit и др.)
Фундаментальные фреймворки (Foundation, Core Foundation)Базовый класс для наследования (NSObject)NSString, NSNumber, NSData, NSDate, NSURL и др.
Технологии многопоточный работы (GCD)Технология хранения и управления данными (Core Data)
Работа с сетью, работа с файлами и др.
![Page 81: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/81.jpg)
Cocoa Touch
Core Services
Core OS
Media
Hardware
![Page 82: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/82.jpg)
Cocoa Touch
Core Services
Core OS
Media
Hardware
![Page 83: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/83.jpg)
Core ServicesCore OS
MediaCocoa Touch
Системный уровень (окружение ядра, драйверы и др.)
Безопасность (Touch ID, связка ключей, сертификаты и др.)
Работа с внешними аксессуарами через Bluetooth
Конфигурирование VPN-туннелей
Многое другое
![Page 84: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/84.jpg)
Cocoa Touch
Core Services
Core OS
Media
Hardware
![Page 85: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/85.jpg)
Cocoa Touch
Core Services
Core OS
Media
Hardware
![Page 86: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/86.jpg)
Основные паттерны
![Page 87: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/87.jpg)
Паттерн “Model-View-Controller” (MVC)
![Page 88: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/88.jpg)
Модель Контроллер Вид
Представляет сущности ваших
данных и манипулирует ими
Например, классы Song или Album
Занимается отрисовкой графического интерфейса
(UIView и все его наследники)
Например, класс AlbumView
Является посредником между моделями и
видами, координирующим их работу.
Он реагирует на поведение пользователя,
получает данные из моделей и отображает их
с помощью видов
![Page 89: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/89.jpg)
IBOutlet
Target-Action
ВидМодель
Контроллер
Delegate /
Datasource
Not
ifica
tions
/ K
VC
![Page 90: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/90.jpg)
Паттерн “Делегирование”
![Page 91: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/91.jpg)
Таблица
![Page 92: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/92.jpg)
Таблица Контроллертаблицы
![Page 93: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/93.jpg)
Таблица Контроллертаблицы
.h @property IBOutlet UITableView *tableView;
.m [self.tableView setDelegate:self]; [self.tableView setDataSource:self];
![Page 94: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/94.jpg)
Таблица Контроллертаблицы
- tableView:cellForRowAtIndexPath: - numberOfSectionsInTableView: - tableView:numberOfRowsInSection: - tableView:titleForHeaderInSection: - tableView:heightForRowAtIndexPath: - tableView:viewForHeaderInSection: - tableView:willSelectRowAtIndexPath: …
Запросы к делегату / источнику данных
![Page 95: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/95.jpg)
Паттерн “Target-Action”
![Page 96: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/96.jpg)
Action Target
Сообщение о событии
![Page 97: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/97.jpg)
1. Какое-либо действие пользователя.
Action
![Page 98: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/98.jpg)
2. Сообщение о событии для объекта-получателя.
![Page 99: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/99.jpg)
3. Выполнение действия получателем сообщения.
Target
![Page 100: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/100.jpg)
Пример
![Page 101: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/101.jpg)
Произошел сброс настроек!
Кнопка
Пользователь нажал на кнопку
Сценарий:
![Page 102: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/102.jpg)
Кнопка
Controller-restoreDefaults:
![Page 103: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/103.jpg)
Кнопка
Controller-restoreDefaults:
-addTarget:action:forControlEvents:
EVENT = TouchUpInside TARGET = Controller ACTION = restoreDefaults:
![Page 104: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/104.jpg)
-addTarget:action:forControlEvents:
Произошел сброс настроек!
Кнопка
Controller-restoreDefaults:
UIControlEventTouchUpInside
EVENT = TouchUpInside TARGET = Controller ACTION = restoreDefaults:
![Page 105: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/105.jpg)
Cocoa Touch
![Page 106: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/106.jpg)
Стандартные виды(фреймворк UIKit)
![Page 107: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/107.jpg)
Стандартные виды(фреймворк UIKit)
![Page 108: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/108.jpg)
Стандартные виды(фреймворк UIKit)
Table
View
Map
Kit V
iew
Text
View
Imag
e Vi
ew
Scro
ll View
Colle
ction
View
Web
View
![Page 109: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/109.jpg)
Стандартные виды(фреймворк UIKit)
Table
View
Map
Kit V
iew
Text
View
Imag
e Vi
ew
Scro
ll View
Colle
ction
View
Web
View
и другие…
![Page 110: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/110.jpg)
Стандартные элементы управления(фреймворк UIKit)
![Page 111: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/111.jpg)
Стандартные элементы управления(фреймворк UIKit)
Button Text Field Segment Control
Switch Stepper Slider
и другие…
![Page 112: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/112.jpg)
Стандартные контроллеры видов(фреймворк UIKit)
![Page 113: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/113.jpg)
Стандартные контроллеры видов(фреймворк UIKit)
![Page 114: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/114.jpg)
View
Con
trolle
r
Page
View
Con
trolle
r
Colle
ction
View
Con
trolle
r
Table
View
Con
trolle
rNa
vigat
ion V
iew C
ontro
ller
Tab
Bar C
ontro
ller
Split
View
Con
trolle
r
Стандартные контроллеры видов(фреймворк UIKit)
![Page 115: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/115.jpg)
View
Con
trolle
r
Page
View
Con
trolle
r
Colle
ction
View
Con
trolle
r
Table
View
Con
trolle
rNa
vigat
ion V
iew C
ontro
ller
Tab
Bar C
ontro
ller
Split
View
Con
trolle
r
Стандартные контроллеры видов(фреймворк UIKit)
и другие…
![Page 116: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/116.jpg)
Примеры
![Page 117: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/117.jpg)
Image View
Label
Slider
Button
Примеры
![Page 118: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/118.jpg)
Примеры
NavigationView Controller
TableView Controller
Tab BarView Controller
![Page 119: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/119.jpg)
Примеры
![Page 120: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/120.jpg)
Примеры
![Page 121: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/121.jpg)
Примеры
![Page 122: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/122.jpg)
Примеры
![Page 123: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/123.jpg)
Аккаунт разработчика
![Page 124: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/124.jpg)
Аккаунт разработчика
Тестирование на устройстве
Доступ к форуму разработчиков Apple
Загрузка бета-версий Xcode, iOS и др.
Возможность публикации приложений в AppStore
![Page 125: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/125.jpg)
Стандартная программа для разработчиков$99 / год
![Page 126: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/126.jpg)
Корпоративная программа для разработчиков$299 / год
![Page 127: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/127.jpg)
Студенческая программа для разработчиковБесплатно*
![Page 128: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/128.jpg)
Официальное руководство по дизайну интерфейсов“iOS Human Interface Guidelines”
Серия “Swift Programming Series”Книга 1: “The Swift Programming Language”Книга 2: “Using Swift with Cocoa and Objective-C”
Правила проверки приложений при публикации в AppStore“App Store Review Guidelines”
Обновленный стэнфордский курс по разработке для iOS“Developing iOS 8 Apps with Swift”
Книги Мэтта Ньюбурга“iOS 7 Programming Fundamentals” (начальный уровень)“Programming iOS 8: Dive Deep into Views, View Controllers, and Frameworks” (продвинутый уровень, не для начинающих)
Книги и материалы для изученияКраткий вводный курс от Apple“Start Developing iOS Apps Today”
![Page 129: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/129.jpg)
Дополнительные источники информации
Ежемесячный журнал, посвященный лучшим практикамhttp://objc.io
Библиотека Apple для iOS-разработчиков“iOS Developer Library”
Тематические разделы на Хабрахабрhttp://habrahabr.ru/hub/ios_dev (и другие)
Ответы на возникающие вопросы можно получить на Stackoverflowhttp://stackoverflow.com (обратите внимание на пользователя BBum)
Форум разработчиков Apple (требуется аккаунт разработчика)https://devforums.apple.com
Различные тематические сайты, персональные страницы и блоги:NSBlog (https://www.mikeash.com/pyblog)NSHipster (http://nshipster.com)и другие…
![Page 130: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/130.jpg)
“It’s easy to get started, it's hard work to get good. If you're interested, and put the time in, you can probably get good. But a lot of people come in with the impression that there
are all these learning resources etc, and you just go through the Stanford lectures (or whatever) and that's it.
The reality is it takes a long time.
If you look at people who are really good at iOS, I think you will find that they still devote a lot of time to continuously learning new things. You have to adopt the mindset that
there is a continuous process of learning.”
— Drew Crawford, sealedabstract.com
![Page 131: Введение в разработку для iOS](https://reader034.vdocuments.mx/reader034/viewer/2022050808/55aa35821a28ab514c8b4663/html5/thumbnails/131.jpg)
Спасибо за внимание!Email: [email protected]: @m1kejd