ViewController
アプリケーションの内部構造の基盤であり、すべてのアプリケーションは少なくとも1つの ViewController を持つ。UI 自体や、UI 同士の遷移の管理を行う。 クラス構造
UIView 描画を行う。ウインドウからの要求に応じて描画する code:text
NSObject
┣ UIScreen
┗ UIResponder
┗ UIView
┣ UIWindow
┗ UIControl
責務
View Management
Data Marchaling
View/Model 間でデータを仲介する
User Interactions
View 経由のイベントのハンドリングを行う
Resource Management
View の管理
Data Marchaling
ViewController は、Model と View の仲介役であり、その間でデータのやりとりを実現させるのが開発者の責務になる。ViewController がデータを保持しても良いが、source of truth は Model になるようになっているのが良いとのこと (それはそう)。 User Interactions
Resource Management
UIViewController のサブクラスを作成した場合、明示的に作成したオブジェクトの管理は、開発者の責務になる。メモリが不足してくると、UIKit はアプリケーションに不要なリソースをリリースできないか?聞いてくるが、これの1つが ViewController の didReceiveMemoryWarning を呼び出すことであり、このメソッドが呼び出されたときには、不要なオブジェクトや、後ほど再生成が容易なオブジェクトを削除する必要がある。例えば、データのキャッシュはここで削除するのが良い Adaptivity
ViewController は、view の表現方法についての責務 を持ち、異なる環境下でも、適切に view を表現する必要がある。例えば、iOS アプリは iPhone/iPad の両方で動作する必要があるし、異なるサイズの iPhone で動作する必要もある。 coarse-grained changes
fine-grained changes
iPhone が開店したとき、サイズクラスは変わらないが、スクリーンの dimension は変更になる 可視性のあるコンテンツは基本的には保持しない
利用していない場合は、開発者自身で設定する
大抵は root view としてインストールされるが、モーダルとして表示したり、他のコンテナの子としてインストールすることもできる
描画