Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Start using Swift.
Search
DAloG
January 14, 2016
Programming
1
110
Start using Swift.
DAloG
January 14, 2016
Tweet
Share
More Decks by DAloG
See All by DAloG
State normalization (RU)
dalog
0
150
Redux + MQTT
dalog
1
750
От задач к проблемам
dalog
1
200
Unlimited power of Data-Driven UI
dalog
4
590
Data-Driven View Controllers. Tips and Tricks
dalog
5
1.8k
2 years of Redux in iOS. Lessons learned
dalog
0
330
Why unidirectional architecture matter for iOS.
dalog
1
260
Mobile backend without REST
dalog
2
82
Self managed teams 101
dalog
0
130
Other Decks in Programming
See All in Programming
REXML改善のその後
naitoh
0
190
Method Swizzlingを行うライブラリにおけるマルチモジュール設計
yoshikma
0
120
Google Sign-inの移行から始めるCredential Manager活用
clockvoid
0
310
今インフラ技術をイチから学び直すなら
yuhta28
1
140
いつか使える ObjectSpace / Maybe useful ObjectSpace
euglena1215
2
140
Some more adventure of Happy Eyeballs
coe401_
2
190
Ebitengineの1vs1ゲーム WebRTCの活用
ponyo877
0
380
Amazon Neptuneで始める初めてのグラフDB ー グラフDBを使う意味を考える ー
satoshi256kbyte
2
260
実践!難読化ガイド
mitchan
0
200
Ruby Parser progress report 2024
yui_knk
2
230
LangGraphでのHuman-in-the-Loopの実装
os1ma
3
1.1k
watsonx.ai Dojo #2 生成AIを使ったアプリ開発入門編
oniak3ibm
PRO
0
180
Featured
See All Featured
Web Components: a chance to create the future
zenorocha
309
42k
Practical Orchestrator
shlominoach
185
10k
RailsConf 2023
tenderlove
28
810
Code Review Best Practice
trishagee
62
16k
How STYLIGHT went responsive
nonsquared
93
5.1k
Robots, Beer and Maslow
schacon
PRO
157
8.2k
For a Future-Friendly Web
brad_frost
174
9.3k
WebSockets: Embracing the real-time Web
robhawkes
59
7.3k
Docker and Python
trallard
39
3k
Building Flexible Design Systems
yeseniaperezcruz
325
38k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
23
1.7k
Fireside Chat
paigeccino
31
2.9k
Transcript
20.01.2016 Forget Objective-C. Start Swift. for Kharkiv Mobile Devs #15
Alexey Demedetskiy ✤ twitter: @DAlooG ✤ email:
[email protected]
✤ skype:
nobidon
Objective-C ✤ KVO/KVC ✤ UIKit ✤ Monolithic namespace ✤ Partially
defined behavior ✤ CoreData
Swift ✤ Closures ✤ Immutability ✤ Value types ✤ Generics
✤ Optionals
Swift ✤ Protocols ✤ Nested types ✤ Static ✤ Default
values ✤ Operators
How to Swift? ✤ Add Swift to existing project ✤
Start new project
Why? ✤ Strong types —> Less errors ✤ More instruments
—> Cleaner code ✤ Better syntax —> Easy to read and write
Optionals vs ‘nil’
nil ✤ [nil aMessage:@«text»] - ✅ ✤ [list addObject:nil] -
❌
Optional<T> ✤ T! ✤ T? ✤ T
Dirty Types ✤ UIKit ✤ External data (Network etc) ✤
Objective-C
How to clear types? ✤ as? : Any -> T?
✤ as! : Any -> T
None
None
None
WTF Immutability. ✤ Reference and Value types ✤ let -
immutable name ✤ var - mutable name
Struct trickery ✤ How many objects will be created? ✤
How many times `print` will write? ✤ What `t1.b` will print?
Struct trickery ✤ 0. There is no objects. ✤ 1.
✤ 4.
Class trickery ✤ How many objects will be created? ✤
How many times `print` will write? ✤ What `t1.b` will print?
Class trickery ✤ 1 ✤ 1 ✤ -1
let == const?
let == const?
Value types Pros ✤ Immutable. Even with `var` ✤ `init`
from compiler ✤ No inheritance
Properties ✤ no setter / getter methods. ✤ …unless `dynamic`
is specified ✤ `willSet` / `didSet` with references to new/old values ✤ `public private(set) var …` is ok
enum vs NS_ENUM
enum vs NS_ENUM
Shadow types!
None
None
When use enum? ✤ Flags ✤ States ✤ Options ✤
Shadow type
Alamofire vs AFNetworking
Namespaces ✤ Nested types ✤ Frameworks ✤ Targets
Nested types
Nested types
Nested types
Nested types
Nested types
let = vs dispatch_once
Outro ✤ Run away from Obj-C ✤ Build your own
logic modules ✤ Use Value Types ✤ Don’t use generics + inheritance + UIKit