Upload
happydev
View
340
Download
4
Embed Size (px)
Citation preview
Ай да Крис, ай да сукин сын!
Крис Латтнер, Apple
• Начал в 2010
• Представили на WWDC летом 2014
• Официально запустили осенью 2014
• Язык набирает свою аудиторию
Objective-C, но без C
• язык для среднестатистического программиста
• + способ учиться написанию самостоятельно
• Синтаксис Swift более привычный, чем Objective-C
• Содержит инструменты защиты от ошибок и багов
Реально быстрый• Лучше понимает действия автора кода и делает
его работу эффективнее
• Дает делать больше за меньшее время
• Игровые площадки(SWIFT Playgrounds) помогают быстрее видеть результат
Популярные библиотеки уже переписали на Swift• PromiseKit
• Alamofire (AFNetworking + Swift)
• Reachability
• ActiveRecord
• GCDKit
Зачем оно мне надо?
Крис Латтнер – единственный человек в мире с четырехлетним опытом программирования на Swift…
нет шансов не быть вторым!
Interoperability
Objective-C types >> Swift types (как id >> AnyObject)
Objective-C core types >> Swift core types (как NSString >> String)
Matching concepts(как pointers >> optionals)
OBJECTIVE-C
UITableView *myTableView = [[UITableView alloc]
initWithFrame:CGRectZero style:UITableViewStyleGrouped];
SWIFT
let myTableView: UITableView = UITableView(frame:
CGRectZero, style: .Grouped)
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)
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")
}
@objc func playSong(name: String)
- (void)playSong:(NSString *)name
@objc init (songName: String, artist: String)
- (instancetype)initWithSongName:(NSString
*)songName artist:(NSString *)artist
@objc(Squirrel)
class Белка {
@objc(initWithName:)
init (имя: String) { /*...*/ }
@objc(hideNuts:inTree:)
func прячьОрехи(Int, вДереве: Дерево) { /*...*/
}
}
class MyViewController: UIViewController {
@IBOutlet weak var button: UIButton!
@IBOutlet var textFields: [UITextField]!
@IBAction func buttonTapped(AnyObject) {
println("button tapped!")
}
}
@IBDesignable class MyCustomView: UIView {
@IBInspectable var borderColor: UIColor =
UIColor.clearColor()
@IBInspectable var borderWidth: CGFloat = 0
@IBInspectable var cornerRadius: CGFloat = 0
}
#import “-Swift.h”
MySwiftClass *swiftObject = [[MySwiftClass alloc]
init];
[swiftObject swiftMethod];
1. Крутая команда
• Гибкость мышления
• Желание изучать что-то новое
• Наслаждение процессом
• Работа не ради денег, а ради результата
• Возможность приостановить производство (вывести пару человек из производства)
3. Поддержка руководства
• Дальновидность
• Желание работать на перспективу
• Умение управлять изменениями
Александр Чернышев[email protected]