UIKitのSelector
Objective-CではUIKitのSelector名を間違えて指定した場合、コンパイラが警告を出してくれます。しかし、同様の状況でもSwiftではコンパイラが警告を出してくれません。その対応策として安達氏は「Selectorの代わりにBlocksKitを使うようにしている」とのこと。BlocksKitを用いることで、ハンドラの中でメソッドを直に呼び出せるようになり、メソッド名が間違っていた場合、コンパイルエラーにできるからだそうです。
ただし、循環参照によるメモリリークの問題も発生するため、弱参照を渡す(weakやunownedを使用する)処理も併せて行ったほうがよいとのことです。
テストでのMockの扱い
続いて安達氏が紹介したのは、テストに関するノウハウです。「クラスメソッドではテストを書くことが多いが、その主な理由は『設計や実装を手助けする』ため。だから、モデル層を中心にして書いている。一方で、挙動が明らかなもの、例えばイニシャライザなどについてはテストをあまり書かない」(安達氏)。
テストでは、Objective-CおよびSwift用のBDD(Behavior-Driven Development:振る舞い駆動開発)フレームワーク「Quick」をDSL(Domain Specific Language:ドメイン固有言語)として使い、実際の値と期待する値を比較するマッチャーとして「Nimble」を利用しているそうです。セッションでは、「病院に関わる一連のモデル」を実装したコード(安達氏が作成)が、これらの利用例として説明に使われました。コードは安達氏のGitHubで公開されていますので、興味のある人はご参照ください。