THIS TALK
1. Early, incomplete version of a language?
2. Buggy, pre-release compiler, IDE, OS?
3. Unreleased beta of presentation app?
4. Presenter who doesn't fully understand the language?
Slide 8
Slide 8 text
WHAT COULD POSSIBLY GO WRONG?
Slide 9
Slide 9 text
WHY SWIFT > OBJC?
▸ Type safety & inference
▸ Closures
▸ Tuples
▸ Super-Enums
▸ Functional programming
▸ Generics
Slide 10
Slide 10 text
Q: WHAT DOES IT
LOOK LIKE?
Slide 11
Slide 11 text
TYPE SAFETY & INFERENCE
LIKE RUST & SCALA
Slide 12
Slide 12 text
CLOSURES
SWIFT CLOSURES ! OBJC BLOCKS
Slide 13
Slide 13 text
TUPLES
LIKE HASKELL & SCALA
Slide 14
Slide 14 text
SUPER-ENUMS*
*OK, NOT EXACTLY THE CORRECT TECHNICAL TERM
Slide 15
Slide 15 text
FUNCTIONAL PROGRAMMING
LIKE HASKELL, SCALA & MANY OTHERS
Slide 16
Slide 16 text
GENERICS
LIKE... UH... EVERY MODERN LANGUAGE!
Slide 17
Slide 17 text
Q: WHAT HAPPENED TO MY BELOVED
*
Slide 18
Slide 18 text
▸ concepts are still there: reference types and value types
▸ pointers still exist to interact with C APIs:
UnsafePointer
▸ C APIs are still usable:
Slide 19
Slide 19 text
DEMO #1
Slide 20
Slide 20 text
Q: HOW DOES IT
ALL WORK?
Slide 21
Slide 21 text
A: it barely does !
Slide 22
Slide 22 text
SERIOUSLY, HOW DOES IT WORK?
▸ Swift objects are actually Objective-C objects*
▸ *Without any methods or properties... strange!
▸ Just like C++, Swift methods are listed in a vtable
▸ Swift properties are ivars with Swift methods
▸ ivars have no type encoding!!!
ivar_getTypeEncoding(); // always NULL
Slide 23
Slide 23 text
DEMO #2
Slide 24
Slide 24 text
XCODE & TOOLS INTEGRATION
▸ Clang knows absolutely nothing about Swift
▸ Swift compiler talks to clang through XPC
/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/
usr/bin
Slide 25
Slide 25 text
DEMO #3
Slide 26
Slide 26 text
JAZZY
GITHUB.COM/REALM/JAZZY
A SOULFUL WAY TO GENERATE DOCS FOR SWIFT & OBJECTIVE-C
Slide 27
Slide 27 text
LINKS ()
▸ Official Swift website
▸ The Swift Programming Language Book
▸ WWDC Videos
▸ WWDC Sample Code
▸ Xcode 6 (and other resources)
Apple Developer Account Required
Slide 28
Slide 28 text
LINKS (!)
▸ This talk: github.com/jpsim/talks
▸ Jay Freeman's AltConf talk: debugging your (Swift) apps with cycript
▸ ObjC/Swift doc generator: github.com/realm/jazzy
▸ Evan Swick: Inside Swift
▸ Swift on StackOverflow