SlideShare a Scribd company logo
2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и как начать его использовать
SWIFT 
Нужен ли вам он 
и как начать использовать
Александр Чернышев 
Senior iOS developer
КТО ЗДЕСЬ?
DEVELOPER 
TEAM 
LEAD 
КТО ЗДЕСЬ? 
PM 
ДИРЕКТОР 
ПРОИЗВОДСТВА 
TECH LEAD
ЧТО VS КАК
ЛИКБЕЗ
Ай да Крис, ай да сукин сын! 
Крис Латтнер, Apple 
• Начал в 2010 
• Представили на WWDC летом 
2014 
• Официально запустили 
осенью 2014 
• Язык набирает свою 
аудиторию
Objective-C, но без C 
• язык для среднестатистического 
программиста 
• + способ учиться написанию 
самостоятельно 
• Синтаксис Swift более 
привычный, чем Objective-C 
• Содержит инструменты защиты 
от ошибок и багов
Реально быстрый 
• Лучше понимает действия автора кода и делает 
его работу эффективнее 
• Дает делать больше за меньшее время 
• Игровые площадки 
(SWIFT Playgrounds) 
помогают быстрее 
видеть результат
2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и как начать его использовать
2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и как начать его использовать
2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и как начать его использовать
Популярные библиотеки уже 
переписали на Swift 
• PromiseKit 
• Alamofire (AFNetworking + Swift) 
• Reachability 
• ActiveRecord 
• GCDKit
И не только библиотеки :)
Зачем оно мне надо? 
Крис Латтнер – единственный человек в мире 
с четырехлетним опытом программирования 
на Swift… 
нет шансов не быть вторым!
ПОГРУЖАЕМСЯ?
Можно встраивать Swift в Objective-C 
и наоборот 
Swift 
Objective-C
Interoperability 
Mix and match 
Migration from existing Objective-C code
Interoperability 
 Objective-C types >> Swift types 
(как id >> AnyObject) 
 Objective-C core types >> Swift core types 
(как NSString >> String) 
 Matching concepts 
(как pointers >> optionals)
Нужно создать Objective-C или 
C wrapper для C++ кода
Initialization
OBJECTIVE-C 
UITableView *myTableView = [[UITableView alloc] 
initWithFrame:CGRectZero style:UITableViewStyleGrouped]; 
SWIFT 
let myTableView: UITableView = UITableView(frame: 
CGRectZero, style: .Grouped)
Factory initialization
OBJECTIVE-C 
UIColor *color = [UIColor colorWithRed:0.5 green:0.0 
blue:0.5 alpha:1.0]; 
SWIFT 
let color = UIColor(red: 0.5, green: 0.0, blue: 0.5, alpha: 1.0)
id Compatibility
SWIFT 
var myObject: AnyObject = UITableViewCell() 
myObject = NSDate() 
let futureDate = myObject.dateByAddingTimeInterval(10) 
let timeSinceNow = myObject.timeIntervalSinceNow
SWIFT 
myObject.characterAtIndex(5) 
// crash, myObject doesn't respond to that method 
let myChar = myObject.characterAtIndex?(5) 
if let fifthCharacter = myObject.characterAtIndex?(5) { 
println("Found (fifthCharacter) at index 5") 
}
Closures
void (^completionBlock)(NSData *, NSError *) = 
^(NSData *data, NSError *error) {/* ... */}
Появляются сайты вроде 
http://fuckingblocksyntax.com
Удобно классно просто 
let completionBlock: (NSData, NSError) -> Void = 
{data, error in /* ... */}
Встраивание Swift в Objective-C 
@objc attribute
@objc func playSong(name: String) 
- (void)playSong:(NSString *)name 
@objc init (songName: String, artist: String) 
- (instancetype)initWithSongName:(NSString 
*)songName artist:(NSString *)artist
class Белка { 
init (имя: String) { /*...*/ } 
func прячьОрехи(Int, вДереве: Дерево) { /*...*/ 
} 
}
@objc(Squirrel) 
class Белка { 
@objc(initWithName:) 
init (имя: String) { /*...*/ } 
@objc(hideNuts:inTree:) 
func прячьОрехи(Int, вДереве: Дерево) { /*...*/ 
} 
}
Integrating with Interface Builder 
Working with Outlets and Actions
class MyViewController: UIViewController { 
@IBOutlet weak var button: UIButton! 
@IBOutlet var textFields: [UITextField]! 
@IBAction func buttonTapped(AnyObject) { 
println("button tapped!") 
} 
}
Integrating with Interface Builder 
Live Rendering 
@IBDesignable и@IBInspectable
@IBDesignable class MyCustomView: UIView { 
@IBInspectable var borderColor: UIColor = 
UIColor.clearColor() 
@IBInspectable var borderWidth: CGFloat = 0 
@IBInspectable var cornerRadius: CGFloat = 0 
}
2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и как начать его использовать
2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и как начать его использовать
Встраивание Swift в Objective-C 
-Bridging-Header.h
#import "MyCustomView.h” 
let myView = MyCustomView() 
myView.backgroundColor = UIColor.redColor()
Встраивание Objective-C в Swift 
-Swift.h
#import “-Swift.h” 
MySwiftClass *swiftObject = [[MySwiftClass alloc] 
init]; 
[swiftObject swiftMethod];
Migrating Your Objective-C Code to Swift 
Mix-and-match 
Migration Interoperability
ВНЕДРЕНИЕ
1. Крутая команда 
• Гибкость мышления 
• Желание изучать что-то новое 
• Наслаждение процессом 
• Работа не ради денег, а ради результата 
• Возможность приостановить производство 
(вывести пару человек из производства)
2. Подходящий проект 
• Лояльный клиент 
• Гибкие сроки 
• В идеале — свой продукт
3. Поддержка руководства 
• Дальновидность 
• Желание работать на перспективу 
• Умение управлять изменениями
НА КАКОМ ЭТАПЕ 
МЫ СЕЙЧАС
Александр Чернышев 
chernyshev@improveitgroup.com

More Related Content

PDF
BDD in Codeception
PDF
Инструменты разные нужны, инструменты разные важны
PDF
Squeek school 4
PDF
Swift, основы (в разрезе Enums)
PPTX
Seo для web разработчиков
PDF
Интуит. Разработка приложений для iOS. Лекция 5. Сложные Views
PDF
Введение в разработку для iOS
PDF
СтройПолимер - утепление ппу и гидроизоляция полимочевиной
BDD in Codeception
Инструменты разные нужны, инструменты разные важны
Squeek school 4
Swift, основы (в разрезе Enums)
Seo для web разработчиков
Интуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Введение в разработку для iOS
СтройПолимер - утепление ппу и гидроизоляция полимочевиной

Viewers also liked (6)

PPT
Windows 7 installation
PDF
Строй Полимер
PDF
Преимущества и недостатки языка Swift
PDF
Interactive Advertising Trends 2014: USA, Europe, IAB Russia.
PDF
Создание сайта. Начало (TemplateMonster Russia)
PDF
Build Features, Not Apps
Windows 7 installation
Строй Полимер
Преимущества и недостатки языка Swift
Interactive Advertising Trends 2014: USA, Europe, IAB Russia.
Создание сайта. Начало (TemplateMonster Russia)
Build Features, Not Apps
Ad

Similar to 2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и как начать его использовать (16)

PPTX
SWIFT нужен ли он вам?
PPTX
Intro to Swift techitout
PDF
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
PDF
Mera Dev Fest - Swift vs. Obj-C
PDF
Разработка мобильных приложений под iOS
PDF
Squeek 1
PDF
Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.
PDF
SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.
PPTX
Основы "мобильной" разработки на примере платформы iOs (iPhone)
PDF
«MVVM в Swift», Александр Зимин, независимый iOS-разработчик
PPTX
IOS8: презентация технической части тимстрима команды
PPT
Кратко о Mac OS X
KEY
Курсы по мобильной разработке. 1 лекция. Знакомство с iOS
PDF
2-е занятие курса iPhone разработки в ГУ-ВШЭ
PDF
Избавляемся от старья и переходим на SwiftUI / Руслан Кавецкий (Agora)
PPTX
новые технологии при разработке нативного I os приложения в рамках проекта ст...
SWIFT нужен ли он вам?
Intro to Swift techitout
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Mera Dev Fest - Swift vs. Obj-C
Разработка мобильных приложений под iOS
Squeek 1
Интуит. Разработка приложений для iOS. Лекция 1. Знакомство.
SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.
Основы "мобильной" разработки на примере платформы iOs (iPhone)
«MVVM в Swift», Александр Зимин, независимый iOS-разработчик
IOS8: презентация технической части тимстрима команды
Кратко о Mac OS X
Курсы по мобильной разработке. 1 лекция. Знакомство с iOS
2-е занятие курса iPhone разработки в ГУ-ВШЭ
Избавляемся от старья и переходим на SwiftUI / Руслан Кавецкий (Agora)
новые технологии при разработке нативного I os приложения в рамках проекта ст...
Ad

More from HappyDev (20)

PPT
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
PPT
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
PPTX
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
PPTX
2015-12-06 Константин Борисов - Как собеседовать программиста?
PDF
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
PPTX
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
PDF
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
PDF
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
PDF
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
PPTX
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
PPTX
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
PDF
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
PDF
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
PPT
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
PDF
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
PDF
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
PDF
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
PDF
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
PDF
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
PDF
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем

2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и как начать его использовать