しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

Swift2.0の変更点

Swiftの公式本「The Swift Programming Language (Swift 2 Prerelease)」を参考に2.0の変更点を調べてみました。
全部は調べきれなかったので分かる範囲まで。

Swift2.0の変更点

Error Handling

他言語におけるtry-catch構文が追加されました。
エラーはErrorTypeプロトコルを使って作成します。

enum TestError: ErrorType {
    case A
    case B
}
do {
    throw TestError.A
} catch {
    NSLog("AAA")
}

Checking API Availablity

下のようにOSのバージョンによる分岐ができるようになりました。

if #available(iOS 9, OSX 10.10, *) {
    NSLog("OS9")
} else {
    NSLog("OS8")
}

guard statement

変数をチェックするguard構文が追加されました。
elseとセットで使うもので、変数がnilの場合にブロックの中に入ります。
ブロック内ではreturnが必須で、returnしない場合Guard body may not fail throughと言われます。

let a: Int? = nil
guard let value = a else {
    return true
}

Protocol extensions

下のようにProtocolへのメソッド追加ができるようになりました。
これは機能のモジュール化がかなりはかどりますね!
ただし、extensionなので変数の定義はできません。

class MyClass: MyProtocol {
    func aaa() { print("A") }
}

protocol MyProtocol {
    func aaa()
}

extension MyProtocol {
    func bbb() { print("B") }
}

MyClass().aaa()
MyClass().bbb()

詳解 Swift

詳解 Swift