SlideShare a Scribd company logo
1 of 31
Download to read offline
let swift(16)
Do Swift:
Swift 무작정 해보기
김윤봉
I’m
김윤봉 @y8k
OSXDev.org 2016 Swift Study Staff
iOS Developer @ Viva Republica
iOSTip FB page
LET me lOg
let swift(16)
INTRO
Swift Project 시작
Swift Release History
Swift 1.0
2010
2014
2015 Swift 2.0
Swift 3.02016
WWDC 2014
WWDC 2015 / Open Sourced
by Chris Lattner
WWDC 2016
I felt
& I decided
“그래도 Objective-C
가 짱이지!!”
What?!
To quote Apple, “Objective-C is not going away, both Swift and
Objective-C are first class citizens for doing Cocoa and Cocoa Touch
development.”
So you can still use Objective-C. However, Apple seems to be
encouraging you to use Swift for any new development, while not
expecting you to go back and re-write all of your Objective-C code.
Although this is pure speculation, we are guessing Apple will also be
moving away from Objective-C for future Framework and API
development, and some day Objective-C may even be deprecated.
So, hop aboard with the rest of the raywenderlich.com Team on the
Swift train :]
Is Swift meant to replace Objective-C, or supplement it?
* https://www.raywenderlich.com/74138/swift-language-faq
TIOBE Index
* http://www.tiobe.com/tiobe_index?page=index
TIOBE Index - Swift
TIOBE Index - Objective-C
StackOverflow Report
* http://stackoverflow.com/research/developer-survey-2016#technology-most-loved-dreaded-and-wanted
So..
let swift(16)
I Did …
5DUCKS
Swift 1.2
2015년 중반
SK Planet (SK Telecom)
iOS 개발자 2명
바로예약
Swift 2.2
2016년 초중반
야놀자
iOS 개발자 3명
let swift(16)
EPISODE
Do We Swift?!
Swift Okay?!
Swift는 1.2부터 안정화 되었다… 하지만…
Just Do It!
let swift(16)
Anyway, Let’s Swift
Bottlenecks
손가락이 기억하고 있는 “[“, “]”, “;”, “NS”, “@“
에라 모르겠다 모든 변수는 var로 통일한다!
Optional and Binding
Collection Types
Property
Optional
var name: String! = “초기값 필수”
var email: String?
Binding
var nickName: String?
nickName = “y8k”
if let name = nickName {
self.nameLabel.text = name

}
else {
self.nameLabel.text = “NoName”
}
guard let name = nickName else {
self.nameLabel.text = “NoName”
return

}
self.nameLabel.text = name
Collection Types
let alphabets: Array<String> = [“A”, “B”, “C”]
let roomAndNames: Dictionary<String, String>
= [“101” : “Kim”, “102” : “Lee”]
let alphabets: [String] = [“A”, “B”, “C”]
let roomAndNames: [String : String]
= [“101” : “Kim”, “102” : “Lee”]
let selectedNums: Set<Int> = [1, 2, 3]
Property
var name: String {
get {
}
set {
}
}
class fullName: Name {
override var firstName: String {
}
}
Property
class fullName: Name {
var number: Int = 0 {
willSet(value) {

}
didSet {
}
}
}
Next
Generics
Closure
Extension
Protocol-Oriented Programming
Protocol-Oriented Programming
protocol Drivable {
var topSpeed: Int { get }
}
protocol Transport {
var seatCount: Int { get }
}
struct Car: Drivable, Transport {
var topSpeed = 150
var seatCount = 5
}
Cons.
Framework API 사용은 거의 유사하다.
Objective-C 능숙자는 여기까지만 알아도 큰 어려움 없이 Swift
로 넘어올 수 있다. 하면서 배우게 되더라…
Swift의 빠른 버전업으로 유지/보수 비용이 증가하나 코드의 간결
성과 확장 용이로 인해 증가된 유지/보수 비용이 보상이 되기도 한
다.
Swift를 이용한 Open Source 프로젝트 전 분야에 걸쳐 많은 시
도가 일어나고 있다.
Objective-C 코드와 Swift 코드는 한 프로젝트 내에서 혼합하여
사용가능하다. 단, 한 파일 내에 두 언어의 코드 혼합은 안됨.
OSXDev.org Swift Study
매달 1회 오프라인 스터디 진행
Open Study
The Swift Programming 

Language by Apple inc.
3.0…. What the…
let swift(16)

More Related Content

What's hot

포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++KWANGIL KIM
 
일단 시작하는 코틀린
일단 시작하는 코틀린일단 시작하는 코틀린
일단 시작하는 코틀린Park JoongSoo
 
Swift3 generic
Swift3 genericSwift3 generic
Swift3 genericEunjoo Im
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdfHyosang Hong
 
[새차원, 코틀린(Kotlin) 강좌] 5. Control Flow
[새차원, 코틀린(Kotlin) 강좌] 5. Control Flow[새차원, 코틀린(Kotlin) 강좌] 5. Control Flow
[새차원, 코틀린(Kotlin) 강좌] 5. Control Flow정연 최
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitiveNAVER D2
 
Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리ETRIBE_STG
 
파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409Yong Joon Moon
 
[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features SummaryChris Ohk
 
동시성 프로그래밍 하기 좋은 Clojure
동시성 프로그래밍 하기 좋은 Clojure동시성 프로그래밍 하기 좋은 Clojure
동시성 프로그래밍 하기 좋은 ClojureEunmin Kim
 
프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oopYoung-Beom Rhee
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개beom kyun choi
 
2013 C++ Study For Students #1
2013 C++ Study For Students #12013 C++ Study For Students #1
2013 C++ Study For Students #1Chris Ohk
 
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Circulus
 
Startup JavaScript 6 - 함수, 스코프, 클로저
Startup JavaScript 6 - 함수, 스코프, 클로저Startup JavaScript 6 - 함수, 스코프, 클로저
Startup JavaScript 6 - 함수, 스코프, 클로저Circulus
 

What's hot (20)

Javascript
JavascriptJavascript
Javascript
 
포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++
 
5 swift 기초함수
5 swift 기초함수5 swift 기초함수
5 swift 기초함수
 
일단 시작하는 코틀린
일단 시작하는 코틀린일단 시작하는 코틀린
일단 시작하는 코틀린
 
6 swift 고급함수
6 swift 고급함수6 swift 고급함수
6 swift 고급함수
 
Swift3 generic
Swift3 genericSwift3 generic
Swift3 generic
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdf
 
[새차원, 코틀린(Kotlin) 강좌] 5. Control Flow
[새차원, 코틀린(Kotlin) 강좌] 5. Control Flow[새차원, 코틀린(Kotlin) 강좌] 5. Control Flow
[새차원, 코틀린(Kotlin) 강좌] 5. Control Flow
 
Java lambda
Java lambdaJava lambda
Java lambda
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
 
Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리
 
파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409
 
[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary
 
동시성 프로그래밍 하기 좋은 Clojure
동시성 프로그래밍 하기 좋은 Clojure동시성 프로그래밍 하기 좋은 Clojure
동시성 프로그래밍 하기 좋은 Clojure
 
프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개
 
2013 C++ Study For Students #1
2013 C++ Study For Students #12013 C++ Study For Students #1
2013 C++ Study For Students #1
 
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
 
Swift 0x17 generics
Swift 0x17 genericsSwift 0x17 generics
Swift 0x17 generics
 
Startup JavaScript 6 - 함수, 스코프, 클로저
Startup JavaScript 6 - 함수, 스코프, 클로저Startup JavaScript 6 - 함수, 스코프, 클로저
Startup JavaScript 6 - 함수, 스코프, 클로저
 

Viewers also liked

안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트병한 유
 
Swift and Xcode8
Swift and Xcode8Swift and Xcode8
Swift and Xcode8Hyuk Hur
 
Swift server-side-let swift2016
Swift server-side-let swift2016Swift server-side-let swift2016
Swift server-side-let swift2016Eric Ahn
 
Swift package manager
Swift package managerSwift package manager
Swift package manager성관 윤
 
Letswift Swift 3.0
Letswift Swift 3.0Letswift Swift 3.0
Letswift Swift 3.0Sehyun Park
 
Swift internals
Swift internalsSwift internals
Swift internalsJung Kim
 
LetSwift RxSwift 시작하기
LetSwift RxSwift 시작하기LetSwift RxSwift 시작하기
LetSwift RxSwift 시작하기Wanbok Choi
 

Viewers also liked (7)

안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트
 
Swift and Xcode8
Swift and Xcode8Swift and Xcode8
Swift and Xcode8
 
Swift server-side-let swift2016
Swift server-side-let swift2016Swift server-side-let swift2016
Swift server-side-let swift2016
 
Swift package manager
Swift package managerSwift package manager
Swift package manager
 
Letswift Swift 3.0
Letswift Swift 3.0Letswift Swift 3.0
Letswift Swift 3.0
 
Swift internals
Swift internalsSwift internals
Swift internals
 
LetSwift RxSwift 시작하기
LetSwift RxSwift 시작하기LetSwift RxSwift 시작하기
LetSwift RxSwift 시작하기
 

Do swift: Swift 무작정 해보기