53

SWIFT нужен ли он вам?

Embed Size (px)

Citation preview

Page 1: SWIFT нужен ли он вам?
Page 2: SWIFT нужен ли он вам?

SWIFTНужен ли вам он

и как начать использовать

Page 3: SWIFT нужен ли он вам?

Александр ЧернышевSenior iOS developer

Page 4: SWIFT нужен ли он вам?

КТО ЗДЕСЬ?

Page 5: SWIFT нужен ли он вам?

КТО ЗДЕСЬ?DEVELOPER

TEAM LEAD

PM

ДИРЕКТОР ПРОИЗВОДСТВА

TECH LEAD

Page 6: SWIFT нужен ли он вам?

ЧТО VS КАК

Page 7: SWIFT нужен ли он вам?

ЛИКБЕЗ

Page 8: SWIFT нужен ли он вам?

Ай да Крис, ай да сукин сын!

Крис Латтнер, Apple• Начал в 2010• Представили на WWDC летом

2014• Официально запустили

осенью 2014 • Язык набирает свою

аудиторию

Page 9: SWIFT нужен ли он вам?

Objective-C, но без C• язык для среднестатистического

программиста• + способ учиться написанию

самостоятельно• Синтаксис Swift более

привычный, чем Objective-C• Содержит инструменты защиты

от ошибок и багов

Page 10: SWIFT нужен ли он вам?

Реально быстрый• Лучше понимает действия автора кода и делает его работу

эффективнее• Дает делать больше за меньшее количество времени

(пример с переменной целое и нецелое число). • Игровые площадки

– SWIFT Playgrounds – помогают быстрее видеть результат

Page 11: SWIFT нужен ли он вам?
Page 12: SWIFT нужен ли он вам?
Page 13: SWIFT нужен ли он вам?
Page 14: SWIFT нужен ли он вам?

Популярные библиотеки уже переписали на Swift• PromiseKit• Alamofire (AFNetworking + Swift)• Reachability• ActiveRecord• GCDKit

Page 15: SWIFT нужен ли он вам?

И не только библиотеки :)

Page 16: SWIFT нужен ли он вам?

Зачем оно мне надо?Крис Латтнер – единственный человек в мире с четырехлетним опытом программирования на Swift…

нет шансов не быть вторым!

Page 17: SWIFT нужен ли он вам?

ПОГРУЖАЕМСЯ?

Page 18: SWIFT нужен ли он вам?

Можно встраивать Swift в Objective-C и наоборот

Swift Objective-C

Page 19: SWIFT нужен ли он вам?

Interoperability

Mix and match

Migration from existing Objective-C code

Page 20: SWIFT нужен ли он вам?

Interoperability Objective-C types >> Swift types

(как id >> AnyObject)

Objective-C core types >> Swift core types (как NSString >> String)

Matching concepts(как pointers >> optionals)

Page 21: SWIFT нужен ли он вам?

Нужно создать Objective-C или C wrapper для C++ кода

Page 22: SWIFT нужен ли он вам?

Initialization

Page 23: SWIFT нужен ли он вам?

OBJECTIVE-C

UITableView *myTableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];

SWIFT

let myTableView: UITableView = UITableView(frame: CGRectZero, style: .Grouped)

Page 24: SWIFT нужен ли он вам?

Factory initialization

Page 25: SWIFT нужен ли он вам?

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)

Page 26: SWIFT нужен ли он вам?

id Compatibility

Page 27: SWIFT нужен ли он вам?

SWIFT

var myObject: AnyObject = UITableViewCell()myObject = NSDate()

let futureDate = myObject.dateByAddingTimeInterval(10)let timeSinceNow = myObject.timeIntervalSinceNow

Page 28: SWIFT нужен ли он вам?

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")}

Page 29: SWIFT нужен ли он вам?

Closures

Page 30: SWIFT нужен ли он вам?

void (^completionBlock)(NSData *, NSError *) = ^(NSData *data, NSError *error) {/* ...

*/}

Page 31: SWIFT нужен ли он вам?

Появляются сайты вроде http://fuckingblocksyntax.com

Page 32: SWIFT нужен ли он вам?

Удобно классно просто

let completionBlock: (NSData, NSError) -> Void = {data, error in /* ... */}

Page 33: SWIFT нужен ли он вам?

Встраивание Swift в Objective-C@objc attribute

Page 34: SWIFT нужен ли он вам?

@objc func playSong(name: String) - (void)playSong:(NSString *)name

@objc init (songName: String, artist: String) - (instancetype)initWithSongName:(NSString *)songName artist:(NSString *)artist

Page 35: SWIFT нужен ли он вам?

class Белка { init (имя: String) { /*...*/ } func прячьОрехи(Int, вДереве: Дерево) { /*...*/ }}

Page 36: SWIFT нужен ли он вам?

@objc(Squirrel)class Белка { @objc(initWithName:) init (имя: String) { /*...*/ } @objc(hideNuts:inTree:) func прячьОрехи(Int, вДереве: Дерево) { /*...*/ }}

Page 37: SWIFT нужен ли он вам?

Integrating with Interface Builder

Working with Outlets and Actions

Page 38: SWIFT нужен ли он вам?

class MyViewController: UIViewController { @IBOutlet weak var button: UIButton! @IBOutlet var textFields: [UITextField]! @IBAction func buttonTapped(AnyObject) { println("button tapped!") }}

Page 39: SWIFT нужен ли он вам?

Live Rendering@IBDesignable и @IBInspectable

Integrating with Interface Builder

Page 40: SWIFT нужен ли он вам?

@IBDesignableclass MyCustomView: UIView { @IBInspectable var textColor: UIColor @IBInspectable var iconHeight: CGFloat /* ... */}

Page 41: SWIFT нужен ли он вам?
Page 42: SWIFT нужен ли он вам?

Встраивание Swift в Objective-C-Bridging-Header.h

Page 43: SWIFT нужен ли он вам?

#import "MyCustomView.h”

let myView = MyCustomView()myView.backgroundColor = UIColor.redColor()

Page 44: SWIFT нужен ли он вам?

Встраивание Swift в Objective-C-Swift.h

Page 45: SWIFT нужен ли он вам?

#import “-Swift.h”

MySwiftClass *swiftObject = [[MySwiftClass alloc] init];[swiftObject swiftMethod];

Page 46: SWIFT нужен ли он вам?

Migrating Your Objective-C Code to Swift

Mix-and-matchInteroperabilityMigration

Page 47: SWIFT нужен ли он вам?

ВНЕДРЕНИЕ

Page 48: SWIFT нужен ли он вам?

1. Крутая команда• Гибкость мышления• Желание изучать что-то новое• Наслаждение процессом• Работа не ради денег, а ради результата • Возможность приостановить производство

(вывести пару человек из производства)

Page 49: SWIFT нужен ли он вам?

2. Подходящий проект• Лояльный клиент • Гибкие сроки• В идеале — свой продукт

Page 50: SWIFT нужен ли он вам?

3. Поддержка руководства• Дальновидность• Желание работать на перспективу• Умение управлять изменениями

Page 51: SWIFT нужен ли он вам?

НА КАКОМ ЭТАПЕ МЫ СЕЙЧАС

Page 52: SWIFT нужен ли он вам?

ВОПРОСЫ?

Page 53: SWIFT нужен ли он вам?

Александр Чернышев[email protected]