CLOSE SEARCH

What’s New in Swift 3

Swift 3.0부터 새로운 API 디자인 가이드가 적용되면서 문법적으로 많은 부분이 변경되었습니다. 1.2에서 2.0으로 업데이트 될 때의 규모와 비슷하거나 그 이상이 될거라 예상됩니다. 이번 글에서는 눈에 띄는 몇가지 내용에 대해 살펴보겠습니다. 모든 변경사항에 대한 내용은 아래의 링크를 통해 얻으실 수 있습니다.

Release_Notes_for_Xcode_8_beta.pdf

1. 함수를 구현하거나 호출하는 부분이 완전히 변경되었습니다.

함수의 첫번째 파라미터 이름은 이제 External Parameter Name으로 사용됩니다. Swift 2.2 버전까지 첫번째 파라미터는 명시적으로 External Parameter Name을 지정한 경우를 제외하고 Internal Parameter Name으로만 사용되고, 함수 호출시에도 생략되었습니다.

예를 들어 Swift 2.2에서는 다음과 같이 함수를 선언하고 호출할 수 있습니다.

Swift 3.0에서는 다음과 같이 구현하고 호출해야 합니다. 이전처럼 호출시 첫번째 파라미터의 External Parameter Name을 생략하고 싶다면 _ 문자를 사용해서 명시적으로 생략해야 합니다.

그동안 함수의 이름은 기능을 쉽게 파악할 수 있도록 서술적으로 작성되어 왔습니다. 그러나 새로운 가이드라인에 따라 불필요한 부분은 함수 이름에서 제거되었습니다. indexOf(_:) 메소드의 예를 보면,

Swift 2.2에서는 다음과 같이 호출했지만

Swift 3.0에서는 함수 이름에서 Of가 사라지고 첫번째 파라미터의 External Parameter Name으로 of가 추가되었습니다.

코코아 프레임워크에서 제공되는 메소드들이 이런 가이드라인을 따르도록 업데이트 되었기 때문에 Swift 2.2 코드를 3.0으로 마이그레이션 할… 생각조차 하기 무섭네요. 이번에는 Xcode 8에서 제공하는 마이그레이션 툴이 똑똑하길 바랄 뿐입니다.

viewWillAppear(_:)와 같은 메소드를 재정의 할 때도 반드시 새로운 가이드라인을 따라야 합니다. 즉, _ 문자를 사용하여 External Parameter Name을 생략해야 합니다.

inout 파라미터를 선언할 때 inout 키워드의 위치가 변경되었습니다.

마지막으로 Swift 3.0에서는 더이상 파라미터를 var로 선언할 수 없습니다.

2. 속성과 파라미터 이름은 항상 소문자로 시작합니다.

이 규칙은 예전부터 적용되어 왔지만, CG, CI와 같은 약자들은 예외적으로 대문자로 작성했습니다. Swift 3.0에서는 이런 예외가 더이상 허용되지 않습니다. 예를 들어 UIColor의 CGColor 속성은 다음과 같이 변경되었습니다.

열거형의 멤버 이름 역시 소문자로 시작합니다. NSTextAlignment 열거형의 Center 멤버는 Swift 3.0에서 center로 변경되었습니다.

열거형을 직접 구현하는 경우 이전처럼 대문자로 시작하는 멤버 이름을 사용할 수 있으나 다른 열거형과의 일관성을 위해서 가이드라인을 따르는 것이 좋습니다.

3. ++, — 연산자가 제거되었습니다.

두 연산자는 Swift 2.2에서 deprecated 되었다가 Swift 3.0에서 완전히 제거되었습니다. 앞으로는 +=, -= 등 다른 연산자를 사용해야 합니다.

4. C 스타일의 for 반복문이 제거되었습니다.

에를 들어 다음과 같은 for 반복문이 있다면

Swift 3.0부터는 for-in 반복문과 범위 연산자를 활용하는 코드로 작성해야 합니다.

5. 기존 매크로를 대체하는 새로운 문법을 제공합니다.

__FILE__, __LINE__, __COLUMN__, __FUNCTION__ 매크로는 각각 #file, #sourceLocation, #column, #function으로 대체되었습니다.

6. 셀렉터와 키패스를 표현하는 새로운 문법을 제공합니다.

셀렉터는 #selector를 통해 표현할 수 있습니다. 또한 getter와 setter를 구분할 수 있습니다.

기존에는 키패스를 표현할 때 문자열을 사용했지만 Swift 3.0에서는 #keyPath를 사용합니다.

 

Filed under: Swift

  1. 유익한 소식 빠르게 전해주셔서 감사합니다.