iTunes Uで公開されているStanfordの「Developing iOS 8 Apps with Swift」で、MVCの解説をしている部分がわかりやすかったのでまとめてみました。
オブジェクトは以下の3つのグループに分けられる。
- モデル
- アプリケーションの本質的な部分(見た目については関知しない)
- コントローラー
- モデルがどのように表示されるか(UIロジック)
- ビュー
- コントローラーに隷属するもの
3つのグループ間のコミュニケーションには以下のような原則がある。
- コントローラーからモデルは直接呼べる
(=ヘッダーをインポートして直接メソッドを呼べる) - コントローラーからビューも直接呼べる
コントローラーからビューへの参照がアウトレット - ビューからコントローラーは以下のパターンを使う
- ターゲット-アクション
- デリゲート
- データソース
- モデルからコントローラーは以下のパターンを使う
- 通知
- KVO
- モデルとビューは直接やり取りしない
(モデルからの通知やKVOをビューで受け取ることはあり得る)