Swift 2.2の変更点をまとめてみた

公開日: : 最終更新日:2016/04/16 iPhoneアプリ開発

20160411-122213.jpg

2016年3月22日、Xcode 7.3と共にSwift 2.2が正式にリリースされました。

Swift 2.2における変更点についてまとめておきたいと思います。

    

スポンサード リンク

タプルを比較できるようになった(ただし条件付き)

20160411-131400.jpg

タプル同士を比較できるようになりました。以下の条件を満たす必要があります。

  • タプルの要素数が同じであること
  • 個々の要素がEquatableであること(==や!=の場合)
  • 個々の要素がComparableであること(<や>などの場合)

また、タプルの要素数は6以下である必要もあります。

    

#selector

20160411-134401.jpg

Selector型の指定は今まで文字列リテラルで行ってきましたが、Swift 2.2では#selectorが導入され、存在しないメソッドを指定するとコンパイルエラーが出てくれるようになりました。

    

Cスタイルのforループ

20160411-125842.jpg

「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では削除される予定です。

    

++演算子、–演算子

20160411-130215.jpg

a++ と ++a で挙動が異なるなど扱いが難しい演算子ということもあり、Swift 2.2では以下のような警告となります。

‘++’ is deprecated: it will removed in Swift 3

Swift 3.0で削除される予定です。早めにa += 1 などに書き換えましょう。

    

関数の引数のvar

20160411-130744.jpg

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を付けられる

20160411-131058.jpg

Raw typeがIntなenumについては、@objcを付けることでObjective-Cから見えるようになります。

    

引数ラベルに予約語が使える

20160411-132613.jpg

関数の引数ラベルとして、「inout」「var」「let」を除くほとんどの予約語(forやinなど)が使えるようになりました。

関数やメソッドをより分かりやすくするのに役立ちそうです。

    

#file, #line, #column, #function

20160411-133126.jpg

Swift 2.1までは

  • __FILE__
  • __LINE__
  • __COLUMN__
  • __FUNCTION__

が利用可能でしたが、Swift 2.2では警告となります。

20160411-133453.jpg

__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キーワード

20160411-133826.jpg

プロトコルのassociated typeを指定する時、今までどおりtypealiasを使うと以下の様な警告が出来るようになりました。

Use of ‘typealias’ to declare associated types is deprecated; use ‘associatedtype’ instead

かわりに新設されたassociatedtypeキーワードを使いましょう。

20160411-134006.jpg

    

引数ラベルまで指定して関数を参照できる

20160411-135707.jpg

引数ラベルのみが異なる複数の関数があっても、引数ラベルを利用して個々の関数を参照できるようになりました。

    

Swiftのバージョンを指定して分岐

20160411-140019.jpg

Swiftのバージョンを指定して分岐させることができるようになりました。

当てはまらないほうに関してはコンパイラによって処理されないので、エラーなどは発生しません。

    

@akio0911はこう思った。

タプルが比較できるようになっていたり、#selectorでメソッドの存在チェックをコンパイル時に行ってくれるようになったのが個人的には嬉しいですヽ(・∀・)ノ

↓ Kindle版がリフローで出たので、iPhoneやiPadで少しずつ読み進められて便利です。

    

この記事が気に入ったら「いいね!」しよう

follow us in feedly

Feedlyで最新記事を購読

Twitterで更新情報をゲット!

LINEでご感想・ご要望お送りください!
(スマホでLINEを起動 > 友だち追加 > QRコード)

関連記事

I20160217-170931.jpg

2016年2月15日以降、Missing iOS Distribution Signing identity for XXX というエラーが出た場合の解決方法

2016年2月15日以降、AppStoreへの申請やipaファイルのエクスポートで「Missin

記事を読む

20150525-224340.jpg

【Swift】クロージャをメソッドや関数の引数として渡す方法

Swiftでメソッドの引数としてクロージャを渡す方法について解説したいと思います。     

記事を読む

20140901-120049

デザイン初心者な僕がデザイナーさんにそこそこ褒められるアプリアイコンを作った方法

デザイン初心者の僕がアプリアイコンを作ったら、本職のデザイナーさんにそこそこ褒められるという嬉しい体

記事を読む

20150410-122409.jpg

複数バージョンのXcodeを共存してMacにインストールする方法

いよいよXcode 6.3が正式にリリースされましたね。 今回は複数バージョンのXco

記事を読む

I20160128-101452.jpg

【解決】Playground execution terminated because the process stopped unexpectedlyが出た時の対処法

Xcodeのプレイグラウンドで「Playground execution terminated

記事を読む

20141210-164612.jpg

【Swift】Generated Header内にSwiftクラスの定義が記述されない場合の確認事項【Xcode6】

Swiftで書いたクラスをObjective-Cで使う際には、「Generated Header

記事を読む

I20151031-175009.jpg

初心者にオススメの本!Swiftではじめる iPhoneアプリ開発の教科書【Swift 2&Xcode 7対応】

     Xcode 7とSwift 2に対応したアプリ開発の入門書籍「Swiftでは

記事を読む

20141225-223049.jpg

【Xcode6】Auto Layoutで制約のFirst ItemとSecond Itemを逆にする方法

一度追加した制約のFirst ItemとSecond Itemを入れ替える方法について紹介します

記事を読む

エディタのショートカット・Auto Layout・ブレークポイントに関する詳しい解説も!「Xcode5徹底解説」

著者の@es_kumagaiさんより献本御礼。iOSアプリ開発に用いるツール「Xcode 5」の

記事を読む

I20160513-010707.jpg

Swiftで計算型プロパティをネストさせてみる

Swiftの計算型プロパティ(Computed property、コンピューテッドプロパティ)を

記事を読む

I20170228-002742.jpg
約3ヶ月で体脂肪率を6.2%も落とせたキッカケについて

(右上の赤枠内がダイエット開始前、左下の赤枠内が3ヶ月後の数値

I20161224-174949.jpg
「季節の野菜を直接配送!季節のスムージー」を買ってみた

「FiNCモール」で、「季節の野菜を直接配送!季節のスムージー」を

I20161002-152537.jpg
【メンズネイル】東京・新宿のネイルサロンでマットネイルしてもらった

2016年7月18日、東京・新宿のメンズOKなネイルサロン「Tot

I20160925-163452.jpg
タブバーアイコン非選択時の色を変更する方法【iOS 10】

UITabBarControllerで、タブバーアイコン非選択時の

I20160924-123726.jpg
iPad Pro 9.7インチ SIMフリーモデルにFREETELのSIMを入れて使ってみた

今までiPad miniで使っていたFREETELのSIM

→もっと見る

PAGE TOP ↑