Letswift swift3 cover

Swift 3.0 - Swift는 어디로 가는가

Let’Swift는 Swift 개발자들이 만나고, 배우고, 즐기는 컨퍼런스로 총 13개의 세션으로 이뤄졌습니다. Swift 개발자들이 모여 iOS의 넥스트 스텝을 이야기한 행사였습니다. 빠르게 발전하는 언어 Swift에 대한 뜨거운 열의를 엿볼 수 있었던 Let’Swift 행사 동영상을 공유합니다

2016년 말 발표가 예정된 따끈따끈한 신상 언어, Swift 3.0이 궁금하신가요? 카카오의 개발자, 박세현님이 Swift 3.0에까지 이르는 Swift의 역사와 Swift 3.0의 변경사항을 차근차근 살펴보고 Swift Evolution을 구현해 보면서 Swift 3.0의 변화 방향을 설명해 주셨습니다.


Swift History

  • 2010년 7월 Swift 개발 시작
  • 2014년 6월 2일 WWDC 앱 Swift로 작성된 공개 앱
  • 2014년 9월 9일 Swift 1.0 마일스톤
  • 2014년 10월 22일 Swift 1.1
  • 2015년 4월 8일 Swift 1.2
  • 2015년 WWDC Swift 2.0 발표
  • 2015년 12월 3일 Swift 오픈소스 발표, 3.0 로드맵 발표

  • Swift 1.2
    • 성능향상
    • if-let 개선(바인딩)
    • as 키워드로 업캐스팅/다운캐스팅
    • Set 추가
    • Objective-C 옵셔널 수식어 추가
  • Swift 2.0
    • 에러처리 throw, do try catch
    • guard let ­ else
    • 프로토콜 익스텐션
    • Objective-C 제네릭

Swift 3.0


이런 개발 뉴스를 더 만나보세요

  • 특징
    • 예상 발표일: 2016 말
    • Swift 언어와 개발 경험 강화
    • Swift 3.0과 이후 버전의 소스 호환성
  • Swift 3.0 중점사항
    • API 디자인 가이드라인
    • 임포트한 Obj-C API에 네이밍 가이드라인 자동 적용
    • 핵심 API에 네이밍 가이드라인 도입
    • 임포트한 Obj-C API의 Swift화 -> Swift에 맞게
    • 언어의 집중 및 정교화
    • 툴 품질 향상 -> 컴파일러와 ID 개선
  • API 디자인 가이드라인
    • 사용 시점의 명확성
    • 짧은 것보다 명확한 것이 더 중요
    • 모든 선언마다 주석으로 문서화
  • Swift Evolution(SE)

Swift 3.0 변경 사항

  • 삭제 사항
    • SE-0002: Removing currying func declaration syntax
    • SE-0003: Removing var from Function Parameters (Function 파라미터에서 var 삭제)

    • SE-0004: Remove the ++ and – operators
    • SE-0007: Remove C-style for-loops with conditions and incrementers
    • SE-0029: Remove implicit tuple splat behavior from function applications
    • SE-0053: Remove explicit use of let from Function Parameters
  • 함수 변경 사항
    • SE-0042: Flattening the function type of unapplied method references
    • SE-0046: Establish consistent label behavior across all parameters including first labels (함수 파라미터 레이블 동작 사항 변경, 파라미터 첫 label을 생략하지 않음)

    • SE-0047: Defaulting non-Void functions so they warn on unused results
    • SE-0066: Standardize function type argument syntax to require parentheses
    • SE-0110: Distinguish between single-tuple and multiple-argument function types (함수 인자가 tuple임을 명시적으로 선언 예정)

    • SE-0111: Remove type system significance of function argument labels
  • Optional 변경 사항
    • SE-0008: Add a Lazy flatMap for Sequences of Optionals
    • SE-0054: Abolish ImplicitlyUnwrappedOptional type
    • SE-0055: Make unsafe pointer nullability explicit using Optional
  • Debugging & Testing
    • SE-0019: Swift Testing
    • SE-0028: Modernizing Swift’s Debugging Identifiers (FILE, etc) (디버깅 Identifier를 변경)

    • SE-0034: Disambiguating Line Control Statements from Debugging Identifiers
    • SE-0039: Modernizing Playground Literals
  • Library
    • SE-0016: Adding initializers to Int and UInt to convert from UnsafePointer and UnsafeMutablePointer
    • SE-0032: Add first(where:) method to SequenceType
    • SE-0052: Change IteratorType post-nil guarantee
    • SE-0065: A New Model For Collections and Indices
    • SE-0094: Add sequence(first:next:) and sequence(state:next:) to the stdlib
  • Swift 3 API Design Guidelines
    • SE-0005: Better Translation of Objective-C APIs Into Swift (Swift API의 번역 개선)

    • SE-0006: Apply API Guidelines to the Standard Library (함수 이름 개선)

    • SE-0023: API Design Guidelines
    • SE-0059: Update API Naming Guidelines and Rewrite Set APIs Accordingly
  • Foundation
    • SE-0069: Mutability and Foundation Value Types
    • SE-0086: Drop NS Prefix in Swift Foundation (NS 프리픽스 제거, 단 Swift에 동일 이름 있는 경우는 제외)
  • Objective-C
    • SE-0062: Referencing Objective-C key-paths
    • SE-0064: Referencing the Objective-C selector of property getters and setters
    • SE-0070: Make Optional Requirements Objective-C- only
    • SE-0033: Import Objective-C Constants as Swift Types
    • SE-0057: Importing Objective-C Lightweight Generics

참고 자료


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

컨텐츠에 대하여

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

Realm Team

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

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

4 design patterns for a RESTless mobile integration »

close