Swift 2.2の変更点をまとめてみた
記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
2016年3月22日、Xcode 7.3と共にSwift 2.2が正式にリリースされました。
Swift 2.2における変更点についてまとめておきたいと思います。
タプルを比較できるようになった(ただし条件付き)
タプル同士を比較できるようになりました。以下の条件を満たす必要があります。
- タプルの要素数が同じであること
- 個々の要素がEquatableであること(==や!=の場合)
- 個々の要素がComparableであること(<や>などの場合)
また、タプルの要素数は6以下である必要もあります。
#selector
Selector型の指定は今まで文字列リテラルで行ってきましたが、Swift 2.2では#selectorが導入され、存在しないメソッドを指定するとコンパイルエラーが出てくれるようになりました。
Cスタイルのforループ
「for 初期化; 比較; インクリメント {}」のようなCスタイルのforループは、Swift 2.2では警告となります。
C-style for statement is deprecated and will be removed in a future version of Swift
かわりにfor … inなどを使いましょう。
ちなみにSwift 3.0では削除される予定です。
++演算子、–演算子
a++ と ++a で挙動が異なるなど扱いが難しい演算子ということもあり、Swift 2.2では以下のような警告となります。
‘++’ is deprecated: it will removed in Swift 3
Swift 3.0で削除される予定です。早めにa += 1 などに書き換えましょう。
関数の引数のvar
Swiftにおいて関数の引数はデフォルトでlet扱いであり、varキーワードを指定することで変更もできましたが、Swift 2.2でvarを使うと警告となります。
‘var’ parameters are deprecated and will be removed in Swift 3
Swift 3では削除される予定です。
Raw typeがIntなenumに@objcを付けられる
Raw typeがIntなenumについては、@objcを付けることでObjective-Cから見えるようになります。
引数ラベルに予約語が使える
関数の引数ラベルとして、「inout」「var」「let」を除くほとんどの予約語(forやinなど)が使えるようになりました。
関数やメソッドをより分かりやすくするのに役立ちそうです。
#file, #line, #column, #function
Swift 2.1までは
- __FILE__
- __LINE__
- __COLUMN__
- __FUNCTION__
が利用可能でしたが、Swift 2.2では警告となります。
__FILE__ is deprecated and will be removed in Swift 3, please use #file
__LINE__ is deprecated and will be removed in Swift 3, please use #file
__COLUMN__ is deprecated and will be removed in Swift 3, please use #file
__FUNCTION__ is deprecated and will be removed in Swift 3, please use #file
かわりに以下の4つが新設されました。
- #file
- #line
- #column
- #function
associatedtypeキーワード
プロトコルのassociated typeを指定する時、今までどおりtypealiasを使うと以下の様な警告が出来るようになりました。
Use of ‘typealias’ to declare associated types is deprecated; use ‘associatedtype’ instead
かわりに新設されたassociatedtypeキーワードを使いましょう。
引数ラベルまで指定して関数を参照できる
引数ラベルのみが異なる複数の関数があっても、引数ラベルを利用して個々の関数を参照できるようになりました。
Swiftのバージョンを指定して分岐
Swiftのバージョンを指定して分岐させることができるようになりました。
当てはまらないほうに関してはコンパイラによって処理されないので、エラーなどは発生しません。
@akio0911はこう思った。
タプルが比較できるようになっていたり、#selectorでメソッドの存在チェックをコンパイル時に行ってくれるようになったのが個人的には嬉しいですヽ(・∀・)ノ
↓ Kindle版がリフローで出たので、iPhoneやiPadで少しずつ読み進められて便利です。
関連記事
この記事が気に入ったら「いいね!」しよう
Twitterで更新情報をゲット!