2016年3月25日金曜日

Xcode7.3、Swift2.2の変更点

iOS9.4、OSX 10.11.4などのリリースにより、Xcodeが7.3、Swiftが2.2になり、仕様変更があった。プロジェクトを開いたら、いっぱいWarningが出たよ。
まあほとんど自動的に修正してくれるようだが。
今はまだ非推奨(deprecated)の段階なので、そのままでもコンパイルしてくれる。

まずソフトウェアアップデートで表示された変更点を和訳。

Xcode 7.3の変更点


  • XcodeのiOSとOS Xのplaygroundは、対話的で、ユーザー生成のイベント(例えばボタン・クリックとiOSジェスチャー)に反応します。
  • コード補完機能は、より知的な提案(APIの範囲内で単語の最初の文字に基づいたオプションを含む)を提供します。
  • デバイスウィンドウは、一つのiPhoneに対して複数のApple Watchデバイスの間での切り替えをサポートします。
  • SwiftとObjective-C両方の記述を評価するとき、デバッガーは必要なフレームワークを自動的にインポートします。
  • ビューデバッギングは、さらなるインスペクター情報、コンテキストメニューとアシスタントエディター・オプションを追加します。
  • 静的アナライザーは、nullabilityとObjective-Cの属性に関連した、より潜在的問題を確認します。

Swift2.2の変更点


  • Swift.orgからダウンロードされるSwift toolchainsは、プリファレンスのupdated Componentsタブから簡単に選択できます。
  • 新しく#file、#line、#columnと#functionの記述を追加。
  • スライスタイプの新しいremoveFirst()とremoveLast()メソッドを含む、標準ライブラリの改善。
  • 条件付きビルドのオプションは、現在のSwiftバージョンに基づく同じファイルの範囲内で、はっきりしたコードブロックを編集することができます。
  • メソッドのObjective-C selectorを参照する、新しい#selector記述。
  • 失敗可能なクラス・イニシャライザは、スーパークラスのイニシャライザを呼ぶ前に、「nil」を返すことができます。
  • 改善されたコンパイル時診断メッセージ。
  • 例えば++、--文と、C言語スタイルのループ文を、将来リリースされるSwift 3に備えて非推奨化。
よくわかんないのもあるけど、まあいいや。
次に、自分のプロジェクトで引っかかった点のまとめ。

selectorの記述で、Objective-C式が非推奨になる

finishTimer = NSTimer.scheduledTimerWithTimeInterval(rnd,
                target: self,
                selector: "finish",
                userInfo: nil,
                repeats: false)

新(Flatwoodsはコードが書かれたクラス名)
finishTimer = NSTimer.scheduledTimerWithTimeInterval(rnd,
                target: self,
                selector: #selector(Flatwoods.finish),
                userInfo: nil,
                repeats: false)


ちゃんとクラス名も入れろってことか。

加算、減算演算子の++、--が次期Swift3から使用不可に


actionCounter++



actionCounter += 1

for文も変わった

for (var i = 0; i < 10; i++) {
    print(i)
}

for i in 0..<10 {
    print(i)
}

旧のi++が将来的に使えなくなるとしてWarningが出るのは当然として、C言語形式の書き方も将来的に廃止になるからとしてfor in形式に書き換えさせられる。

0 件のコメント:

コメントを投稿