キー値監視


キー値監視は、別のオブジェクトのプロパティが変わった時にオブジェクトが直接通知されることを可能にするメカニズムです。キー値監視(または KVO) は、アプリケーションの凝集性の重要な要因となり得ます。これは、モデル-ビュー-コントローラ・デザインパターンに準拠して設計されたアプリケーション内のオブジェクト間の通信モードです。たとえば、ビューとコントローラ層のオブジェクトとモデルオブジェクトの状態を同期するためにそれを使用できます。一般的には、コントローラ・オブジェクトは、モデルオブジェクトを監視し、ビューはコントローラオブジェクトやモデルオブジェクトを監視します。



注意:UIKit フレームワークのクラスは、一般的に KVO をサポートしていませんが、まだ、カスタムビューを含む、アプリケーションのカスタムオブジェクトでそれを実装できます。



kvo



KVO で、一つのオブジェクトは、単純属性、対一の関係、および対多の関係を含め、別のオブジェクトの任意のプロパティを監視できます。オブジェクトは、プロパティの現在および以前の値が何であるかを知ることができます。対多関係の監視者は、加えられた変更の型についてだけでなく、どのオブジェクトが変更に含まれているかも通知されます。


通知メカニズムとしては、キー値監視は NSNotificationNSNotificationCenter クラスが提供するメカニズムと似ていますが、重要な違いもあります。オブザーバーとして登録されたすべてのオブジェクトに通知を放送する中心的なオブジェクトの代わりに、KVO 通知は、プロパティ値の変更が発生した時に、オブジェクトを監視するために直接効果を表します。


KVOの実装


ルートクラス、NSObject は、キー値監視の基本実装を提供し、めったにオーバーライド(上書き) する必要がありません。したがって、すべての Cocoa オブジェクトは、キー値で監視するのが、本質的に可能です。プロパティの KVO 通知を受信するには、以下のことを行う必要があります:


KVO はバインディングに不可欠(OS X)


Cocoa バインディングは、モデル内の値を維持し、多くの"グルーコード" を記述することなく、アプリケーションのビューレイヤを同期化できる、OS X の技術です。Interface Builder のインスペクタを通して、ビューのプロパティと、データの一部の間の接続を取り次ぐことができますし、一つの変化が、他にも反映されている"結合" ができます。KVO は、キー値コーディング、キー値結合、および Cocoa バインディングに役立つ技術です。


前提条件の記事


キー値によるコーディング

関連記事


モデル・ビュー・コントローラー
バインディング

既知のディスカッション


キー値監視プログラミングガイド

サンプルコードプロジェクト


SourceView: Using NSOutlineView with NSTreeController


BindingsJoystick



目次
Xcode の新機能

  • アニメーション
  • コア・アニメーションは力を与える
    アニメーション必要条件
    暗黙・明示にアニメーション
    Platform 毎の Core Animation 統合
  • アプリケーションオブジェクト
  • アプリ Object は外部 delegate に通知
    アプリはアプリオブジェクト持つ
  • コントロールオブジェクト
  • UIKitでActMessageがEventを決定
    AppKitでControlは複数のセルを持つ
  • 座標系
  • 座標系は異なる描画方向を持てる
    ウインドウとビューは独自座標系
  • ドローイングモデル
  • ビューは自分自身を描画
    グラフィックコンテクスト
    描画はビューローカル座標系で
  • イベント(iOS)
  • オブジェクトはビューに触れる指を表現
    タッチオブジェクトの配信は、定義された経路をたどる
    イベントを処理するために4つのメソッドをオーバーライド
    モーションイベントの処理
  • フォーマッタ
  • フォーマッタの設定と適用
    OSXでセルにフォーマッタを添付
  • メインイベントループ
  • アプリケーションオブジェクト取得
    コアオブジェクトはイベントに応答
  • アウトレット
  • ターゲットアクション
  • アクションメソッドは特定の形式
    ツールの使用でターゲット設定
    ターゲットアクションと OS
  • アンドゥ・マネージャー
  • 取り消しの操作はオブジェクトに
    取り消し操作はスタックに
    操作は取り消しグループに合体
    取り消しを要求する方法
    取消マネージャとレスポンダ
    取消を要求ユーザーインタフェース
  • ビュー階層
  • 表示プロパティは、階層の関係定義
    iOS ではウィンドウはビューです
  • ビュー・オブジェクト
  • ビューのの中核プロパティ
    ビューはアニメーションの本質
  • ストーリーボード
  • シーンは唯一のビュー·コントローラとそのビューに対応
    セグエが2つのシーン間の遷移を管理
  • ウインドウ・オブジェクト
  • ウインドウがイベント配布
    iOS のウィンドウオブジェクト
    OS X のウィンドウオブジェクト
  • ペーストボード
  • ペーストボードは多くの項目を保持
    ペーストボードの持続性
  • 環境設定
  • 各ユーザー設定はドメインに属する
    アプリは環境設定の選択を提示
    ユーザーデフォルト設定で OS X
  • レスポンダ・オブジェクト
  • ファーストレスポンダは最初に受信
    レスポンダチェーンと協調イベント















    トップへ