Xcode6 Beta6でコンパイルできていたコードが、Beta7ではコンパイルできなくなったので対応したメモ。
今回のアップデートでは、一部の関数定義の引数に書かれていた"!"がなくなり、戻り値がOptional型になったものがあるようだ。
メンバ変数の型変更への対応
例えばStoryboardにあるViewに関連付けされたControllerでstoryboard変数にアクセスすると、Optional型が返ってくるようになった。
self.storyboard
という風にアクセスしていた変数に対して、例えば
self.storyboard!
のような形でアンラップして対応した。
関数の引数の型変更への対応
前項とほぼ同じだが、一部の関数で引数が変更されている。少しはまったのがUITableViewとUICollectionViewのDataSourceプロトコルの変更。各種DataSourceプロトコルで関数の引数に書かれていた"!"マークがなくなった。こちらはプロトコルの関数定義に合わせることで対応。
この変更により、独自に定義しているDataSourceクラスでは"does not conform to protocol"エラーが発生していた。
他にもsegue周りでもoverrideしていた関数の引数が変わっている箇所が見受けられた。
ブロックを引数にとる場合にnilを渡せなくなった箇所への対応
ひとまず空ブロック"{}"を渡して対応。
ブロックを引数にとる全ての関数で変更されたのかは確認していない。
必要な箇所に"!"または"?"を付けるか外せばコンパイルは通ったが、箇所によってはアンラップの仕方を考えた方がよいかもしれない。