コントローラーオブジェクト


コントローラオブジェクトは、コーディネーターとして、あるいは1つ以上のビューオブジェクトと1つ以上のモデル·オブジェクトとの間の仲介として機能します。Model-View-Controller デザインパターンでは、コントローラオブジェクト(または、単に、コントローラ) は、ビューオブジェクトで - ユーザーが、ボタンをタップしたりクリックしたり、テキストフィールドにテキストを入力したりした時などに - ユーザーアクションや意図を解釈し、モデルオブジェクトに新しいデータや変更されたデータを知らせます。モデルオブジェクトが変更したり、たとえば、ユーザが、ファイルシステムに格納された文書を開けたり、それらを表示できるようにビューオブジェクトに新しいモデルデータを通信します。コントローラは、このようにビュー·オブジェクトが、モデルオブジェクトの変化について学び、それを指揮し、その逆も生じます。コントローラオブジェクトも、設定でき、アプリのタスクを調整し、他のオブジェクトの寿命を管理できます。Cocoa フレームワークは、3つの主要なコントローラの種類を提供しています:コントローラの調整、ビューコントローラ(iOS 上で)、および仲介コントローラ(OS Xで) です。


controller_object_2x


コントローラの調整


コントローラの調整は、アプリ全体の機能、またはその一部を監督し、管理します。それらは多くの場合、アプリ固有のロジックがアプリに注入されている場所です。コントローラ調整は、様々な機能を果たし、以下の事を含んでいます。



コントローラを調整するのは、多くの場合、NSObjec のカスタムサブクラスのインスタンスです。OS X では、Cocoa アプリが、文書構造を活用できた場合、コントローラの調整は、多くの場合、NSWindowControllerNSDocumentController オブジェクトです。iOS アプリでは、ビューコントローラは、多くの場合、コントローラを調整する役割を包含します。


ビューコントローラ


UIKit フレームと AppKit フレームワークは、(それぞれ、iOS と OS X 用) 共にビューコントローラクラスを提供しますが、これらのクラスは異なる特性を持っています。AppKit では、View Controller は NSViewController クラスのカスタムサブクラスのインスタンスです。View Controller は、nib ファイルにアーカイブされたビューを所有し、そのビューは、データオブジェクトを表します。View Controller は、そのビューのサブビューへの接続や更新を管理します。


UIKit では、View Controller はコンテンツの画面全体を表示するビューを管理します。それは、このビューへの参照を保持し、nib ファイルを作成したり、それからロードできます。コントローラは、このビューの表示、アプリ内の後続のビューへの移行を管理します。(ほとんどの場合、次のビューは右側からスライドしてきます。) ナビゲーションバーとタブバー、およびすべての関連する表示の動作はビューコントローラオブジェクトによって管理され、実装されています。ビューコントローラはまた、モーダルビューを表示し、メモリ不足の警告に応答し、向きの変わった時にビューを回転させます。


iOS の View Controller は UIViewController のサブクラスのインスタンスです。UIKit は、このような UITableViewController などの UIViewController のいくつかの特別な目的のサブクラスを提供します。コントローラがモデルとビューの間のデータの仲介をするにはフレームワーク・ビュー・コントローラのクラスを拡張する必要があります。ビューコントローラは、通常、フレームワーク・オブジェクトの多くの種類のデリゲートやデータソースオブジェクトです。


仲介コントローラ(OS X)


仲介コントローラは、ビューオブジェクトとモデルオブジェクト間のデータの流れを容易にします。ユーザーがビューオブジェクトに表示されている値を変更すると、仲介コントローラは自動的にストレージからモデルオブジェクトに新しい値を伝えます。モデルのプロパティがその値を変更したとき、仲介コントローラは、適切なビュー·オブジェクトが変更された値を表示したことを保証します。コントローラオブジェクトの他の型とは異なり、それらは非常に再利用可能です。これらや、他の理由のため、仲介コントローラは Cocoa バインディング技術の中心的な要素です。Interface Builder のライブラリから仲介コントローラをドラッグして、コントローラとそのビューオブジェクトとそのモデルオブジェクト間のバインディングを確立するために、これらのオブジェクトを構成します。仲介コントローラは、典型的には、抽象 NSController クラスの具象サブクラスのインスタンスです。


前提条件の記事

モデル・ビュー・コントローラ

メッセージ


関連記事

モデルオブジェクト

デリゲート(Delegate)

通知


既出の議論

モデル・ビュー・コントローラー






次の章
前の章
目次
Xcode の新機能

インターフェースビルダー ヘルプ
NSObject(class)
概要(NSObject,class)

  • アクセシビリティ
  • VoiceOver での作業
  • アクセサメソッド
  • 命名規則
  • アプリ ID
  • 明示的なアプリ ID は、一つのアプリに一致
    ワイルドカードアプリ ID は複数のアプリに一致
    アプリコード署名
  • ブロックオブジェクト
  • ブロックの宣言
    ブロックの作成
    変更可能なブロックの変数
    ブロックを使用する
    比較演算
  • バンドル
  • バンドルの構造と内容 バンドルリソースへのアクセス
    ロード可能なバンドル
  • カテゴリ
  • 宣言
    実装
  • クラスクラスタ
  • 利点
    検討事項
  • クラスの定義
  • インターフェース
    実装(Implementation)
  • クラスメソッド
  • サブクラス
    インスタンス変数
    self
  • ココア(タッチ)、Cocoa(Touch)
  • フレームワーク(Framework)
    言語
    コーディング規則
  • コレクション(Collection)
  • コレクションクラス
    順序付けスキーム
  • コントローラーオブジェクト
  • コントローラの調整
    ビューコントローラ
    仲介コントローラ(OS X)
    宣言されたプロパティ
  • デリゲート(Delegate)
  • デリゲートとココアフレームワーク
    デリゲートと通知
    データソース
    動的バインディング
  • 動的型付け
  • isa ポインタ
  • 列挙
  • NSEnumerator
    高速列挙
  • 例外処理
  • 例外の種類
    コンパイラディレクティブを使用した例外処理
    信号伝達のエラー
    フレームワーク
    情報プロパティリスト
  • 初期化
  • イニシャライザ宣言の型
    初期化子を実装
    国際化
  • 内観(イントロスペクション)
  • イントロスペクション情報の種類
  • キー値コーディング
  • オブジェクトのプロパティと KVC
    クラスを KVC に準拠させる
  • キー値監視
  • KVO の実装
    KVO はバインディングの不可欠な部分(OS X)
  • メモリ管理
  • メモリ管理の規則
    メモリ管理の側面
    メッセージ
    メソッドのオーバーライド
  • モデルオブジェクト
  • うまく設計されたモデルクラス
  • モデル・ビュー・コントローラ
  • モデルオブジェクト
    ビュー・オブジェクト
    コントローラオブジェクト
  • 複数のイニシャライザ
  • 指定イニシャライザ
    Nib ファイル
  • 通知
  • 通知オブジェクト
    通知を観察する
    通知を投稿
  • アーカイブ
  • 鍵付き連続アーカイバ
    鍵付きアーカイブの作成とデコード
  • オブジェクトの比較
  • 比較ロジックを実装する
  • オブジェクトのコピー
  • オブジェクトコピーのための要件
    メモリ管理への影響
  • オブジェクト作成
  • オブジェクト作成式の形式
    メモリ管理への影響
    ファクトリメソッド
  • オブジェクトの暗号化
  • オブジェクトの暗号化と復号化する方法
    キー付き対連続的アーカイブ
    オブジェクトグラフ
    オブジェクトのライフサイクル
    オブジェクトモデリング
  • オブジェクト可変性(mutability)
  • 可変オブジェクトを受け取る
    可変オブジェクトを格納
    オブジェクトの所有権
    Objective-C
  • プロパティ(特性)リスト
  • プロパティリストの型とオブジェクト
    プロパティリストのベストプラクティス
    プロパティリストのシリアライズ
  • プロトコル
  • 公式、非公式なプロトコル
    正式なプロトコルを採用、準拠
    独自のプロトコルを作成
    ルートクラス
  • セレクタ
  • セレクタの取得
    セレクタの使用
    シングルトン
  • 統一された型の ID
  • UTI は逆ドメイン·ネーム·システム規則を使用
    統一された型 ID は適合階層で宣言
    OS X のアプリは、アプリバンドルでそれらを定義して新しい UTIを追加
  • 値オブジェクト
  • NSValue