2. 출처
• WWDC 2014 키노트
• WWDC 2014 402, 403, 404, 407
• The Swift Programming Language
• Using Swift with Cocoa and Objective-C
• https://medium.com/swift-programming/
21. Chris Lattner
• 2000년 일리노이 석사시절 LLVM
• 2005년 애플 합류
• 2010년에 Swift 개발을 시작
• 2011년에 개발자들이 합류, 2013년에 애플 개발 툴의 주요
포커스가 됨
• “Objective-C, Rust, Haskell, Ruby, Python, C#, CLU,
and far too many others to list.” (Chris Lattner)
27. Objective-C
• C언어의 프리프로세서 + 런타임 확장 = 슈퍼셋
• 모든 코드에 존재론적 의문을 가질 수 있음
• 클래스는 C에서 어떻게 표현되는가?
• 메세징은 C에서 어떻게 수행되는가?
• 대신 엄청난 메타프로그래밍이 가능
• class_replaceMethod,
• class_getClassMethod
• imp_implementationWithBlock
65. Initializers
• Initailizer는 모든 프로퍼티를 초기화 해야한다
• struct Color {
let red, green, blue: Double
init(grayScale: Double) {
green = grayScale
blue = grayScale
}
} //컴파일 에러: red 값이 초기화 되지 않음
66. Initializers
• struct Color {
let red, green, blue: Double
init(grayScale: Double) {
red = grayScale
green = grayScale
blue = grayScale
}
}
67. Initializers
• struct Color {
let red, green, colour: Double
mutating func validateColor() { … }
init(grayScale: Double) {
red = grayScale
green = grayScale
validateColor()
blue = grayScale
}
} //error
68. Initializers
• struct Color {
let red, green, colour: Double
mutating func validateColor() { … }
init(grayScale: Double) {
red = grayScale
green = grayScale
blue = grayscale
validateColor()
}
}
182. 정리
• Optional과 Initalization을 이해하자
• unowned 짱
• 스위프트 타입(String)은 오브젝티브씨 타입(NSString)이 아니다
• 더 안전한 코드를 쓰려고 하자
• 프로토콜이나 패턴매칭등의 멋진 기능들은 당장 몰라도 좋지만 할
수 있는 길이 열렸다