Letswift swift do swift cover

Do Swift - Swift 무작정 해보기

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로는 못돌아가실 겁니다.”


발표 슬라이드는 아래를 참고해주세요.

컨텐츠에 대하여

이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.

Realm Team

Realm의 미션은 더 나은 앱을 빠르게 개발할 수 있도록 돕는 것입니다. 이를 위해 저희는 개발자들이 실시간 협업, 가상 현실, 라이브 데이터 동기화, 오프라인 경험, 메시징 등 정교하고 강력한 기능을 쉽게 개발할 수 있도록 하는 개발 도구와 플랫폼을 제공하고 있습니다.

저희는 모바일 인터넷이 수많은 사용자와 보다 많은 디바이스가 속한 개방형 네트워크와 이들 간의 실시간 상호 작용으로 진화할 것이라고 믿으며, 개발자가 이같은 방향으로 발전할 수 있도록 돕기 위해 저희 제품들을 개발하고 있습니다.

4 design patterns for a RESTless mobile integration »

close