この記事の目的
先日新しくiOS9.3とXcode7.3がリリースされSwiftはver.2.2となりました。この過程で非推奨になったコードがあり、既存のプロジェクトに関しては警告から自動で置換できますが、これから書くコードでいちいち書き直すのは面倒だと思うので備忘録的な感じで非推奨文法と推奨される書き方をまとめてみます。
といっても既存のコードで書いたことのあるものしかわからないのでまた新しいものがあれば随時更新します。
インクリメント・デクリメント
Swiftにはこれまで基礎となっているC系言語の潮流にのってnumber++
などのインクリメント・デクリメントがありました。しかしこれがSwift3で廃止されることが決定されたためSwift2.2から非推奨コードになっています。かわりにnumber+=1
などを使いましょう。
またこれに伴ってC/C++やJavaなどに慣れている人には馴染み深いfor文のfor var i = 0; i < n; i++
という文法ももちろん非推奨となっています。i++
をi+=1
とすればもちろんいいのですがSwift2.2ではこの書き方が良くないということでSwiftならではのfor i in 0 ..< n
という書き方を採用することが推奨されています。
selectorなど
Swift2.2で新文法として#selectorなどが導入されています。これにともなって"function:"
のようなObjective-Cから継承された文法が非推奨となり代わりに#selector(function(_:))
という書き方が推奨になりました。
ようはちゃんと普通のメソッドの形で書けるようになったということですね、これはわかりやすい気がする。
AnyObjectについて
非推奨ではなくこちらはエラーが出るものですがvar array = [AnyObject]()
などのように宣言した配列に配列をaddしていったものの一番の子要素にアクセスする時今まではarray[0][0]
でよかったのですがSwift2.2から(array[0] as! NSArray)[0]
などのように明示的にキャストしなければいけなくなったようです。おそらくAnyObjectが配列以外の場合も明示的にキャストする必要があると思われます。