Let’Swift는 Swift 개발자들이 만나고, 배우고, 즐기는 컨퍼런스로 총 13개의 세션으로 이뤄졌습니다. Swift 개발자들이 모여 iOS의 넥스트 스텝을 이야기한 행사였습니다. 빠르게 발전하는 언어 Swift에 대한 뜨거운 열의를 엿볼 수 있었던 Let’Swift 행사 동영상을 공유합니다
Swift를 왜 쓰는지 궁금하거나 Swift로 개발을 하고 싶은데 어떻게 시작해야 할지 막막하신가요? Swift 입문자 분들을 위해 Do Swift - Swift 무작정 해보기라는 주제로 비바리퍼블리카의 김윤봉님이 발표한 세션 동영상을 준비했습니다.
Swift 도입 필요성
- Release History
- Swift 때문에 힘들게 배운 Objective-C를 버려야 하는가?
- 언젠가는 Objective-C가 deprecated될 것이라는 예측이 많음
- 한국 이외 국가에서는 신규 프로젝트에 Swift 도입률이 높음
- Swift의 언어 사용 순위 (TIOBE)는 지속적으로 상승 중
- Objective-C의 언어 사용 순위는 지속적으로 하락 중
Let’s Swift!
- 1.2 이전에는 Swift로 개발하기에는 안정화되지 않은 언어로 개발해야 하는 부담이 컸음
- 앱 용량이 10~20 메가 가량 커져서 적용하기 어려움
- 고민하기 시작하면 끝이 없으니 고민하지 말고 그냥 시작할 것
- 가장 큰 Bottleneck은 단지 두 개뿐
- 손가락이 기억하고 있는 “[”, “]”, “;”, “NS”, “@”
- 모든 변수는 var로 통일한다!
- 그러나 일단 Swift의 간결한 문법에 익숙해지면 Objective-C로 돌아가기 어려움
- 다른 Bottleneck
- Optional and Binding
- Collection Types
- Property
Optional
- nil 처리가 되는 변수인지 안되는 변수인지에 따라
var name: String! = "초기값 필수"
var email: String?
Binding
- nil인지 아닌지 체크 이후 조건절에서 처리를 계속 해줘야 하므로 이를 쉽게 해줌
- if let, guard let, if / guard 등을 사용
- if let: 조건문 안에서 변수를 사용, 변수가 nil이어도 계속 처리 필요할 때 사용
- guard let: 성립되지 않으면 리턴, 성립되면 조건절 밑에서 계속 처리, 변수가 nil이면 더 이상 처리할 필요 없을 때 사용
- 일단 따라 써보는 것부터 시작해보자!
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
- 1.2까지는 NS prefix 사용 가능했으나 2 이후부터는 사용 어려움
- 여러 형태로 사용할 수 있음
- NS 아닌 Set도 등장함
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
- get/set, override는 비슷함
- 명시적으로 willSet, didSet으로 값이 세탕됐을 때 활용 가능
var name: String {
get {
}
set {
}
}
class fullName: Name {
override var firstName: String {
}
}
class fullName: Name {
var number: Int = 0 {
willSet(value) {
}
didSet {
}
}
}
Protocol-Oriented Programming
- 쉽게 설명하면 필요한 것을 만들어 놓고 조립하는 프로그래밍 방법
- delegate 사용하는 것처럼 필요 기능을 계속 추가할 수 있음
protocol Drivable {
var topSpeed: Int { get }
}
protocol Transport {
var seatCount: Int { get }
}
struct Car: Drivable, Transport {
var topSpeed = 150
var seatCount = 5
}
장점과 단점
- Framework API 사용은 거의 유사, 생각보다 빠르게 적응 가능 -> 일단 한 번 해보자!
- Objective-C 능숙자는 앞의 설명까지만 알아도 큰 어려움 없이 Swift로 전환 가능, 프로젝트하면서 배우는 것이 가능
- Swift의 빠른 버전업으로 유지/보수 비용이 증가하나, 코드의 간결성과 용이한 확장성으로 보상이 될 수 있음
- Swift를 이용한 Open Source 프로젝트 전 분야에 걸쳐 많은 시도가 일어나고 있음
- Objective-C 코드와 Swift 코드는 한 프로젝트 내에서 혼합하여 사용가능하나, 한 파일 내에 두 언어의 코드 혼합은 불가능
결론
“개인 프로젝트보다 회사 프로젝트에 저질러 보세요. 일단 Swift로 전환하시면 다시 Objective-C로는 못돌아가실 겁니다.”
발표 슬라이드는 아래를 참고해주세요.
컨텐츠에 대하여
이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.