Swifter {Swift Developer}

메뉴

Xcode6 beta6에서 Swift의 변경사항

Xcode 6 베타5가 나온지 2주만에 Xcode 6 베타6가 오늘 나왔습니다. 아마도 앞으로 2주단위로 계속해서 베타를 내놓을 것같다는 생각이 듭니다.

릴리즈노트를 참고하여 정리해보니 아래와 같습니다.

Optional 형에 대해 더 개선

Foundation API에서 Optional형의 재검토가 더 진행되고 있습니다. T! 대부분이 nil을 얻을 경우, T?이고 그렇지 않은 경우 T로 변경되었습니다. 그리고 T!상태 그대로 두는 것에 대해서도 더 이상 애플사에 보고할 필요도 없을 정도로 애플도 이에 대해 파악하고 있습니다.

T?이어야할 곳이 T가 있는 경우 다음과 같이 명시적으로 Optional형을 지정하여 할당한 후, 다시 랩핑해서 해결할 수 있습니다.

[swift]

var fooOpt: NSFoo? = object.reallyMightReturnNil()
if let foo = fooOpt { }

[/swift]

이 버그를 찾으면 알려주세요!

??의 개선

?? 연산자에 아래와 같은 오버로드가 추가되었습니다.

[swift]

public func ?? <T> (optional: T?, defaultValue: @autoclosure () -> T?) -> T? {
switch optional {
case .Some(let value):
return value
case .None:
return defaultValue()
}
}

[/swift]

따라서 x = optional1 ?? optional2 ?? defaultValue의 처리가 예상대로 되어 아래와 같이 수정됩니다.

[swift]

let a: Int? = nil
let b: Int? = 5
a ?? b // was nil; is now .Some(5)

[/swift]

RawOptionSetType의 BitwiseOperationType 구현

RawOptionSetType은 BitwiseOperationType으로 구현되었습니다. 따라서 import된 NS_OPTIONS도 |=, &= 및 ^=으로 이용가능합니다.

String과 Character의 성공적 일관성

String과 Character 처리가 Array와 똑같게 되었습니다. 이는 +는 반드시 결합을 의미하고 요소 추가는 사용할 수 없게 된 것입니다. String + Character는 앞으로 오류로 처리됩니다. Character + Character 및 String + String은 그대로 사용가능합니다.

void*->UnsafePointer<Void>

C언어의 void*를 import할 때 ()대신 Void형 별칭이 사용되게 되었습니다. 예로 이전 UnsafeMutablePointer<()>이었던 것이 UnsafeMutablePointer<Void>로 변경된것입니다. 그러나 의미적으로는 이전과 동일합니다.

이상입니다.

Facebook Comments

카테고리:   Xcode

댓글

죄송하지만 댓글은 닫혀 있습니다.