通知
通知は、プログラム内のイベントを通知するために1つ以上の監視オブジェクトに送信されるメッセージです。ココアの通知メカニズムは、ブロードキャストモデルに従います。これは、そのイベントについて知りたい任意の数のオブジェクトと通信するためのプログラムイベントを開始し、また処理するオブジェクトのための方法です。オブザーバー(監視者) として知られている、通知の受信者は、イベントに応じて、独自の外観、動作、および状態を調整できます。オブジェクトが送信する(または 投稿 する)通知は、それらの監視者が何であるかを知る必要はありません。通知は、このようにプログラムの中で協調と結束を達成するための強力なメカニズムです。それは、プログラム(このような依存関係は、これらのオブジェクトの再利用性を減少させます)内のオブジェクト間の強い依存関係の必要性を低減します。Foundation、AppKit、その他の Objective-C フレームワークの多くのクラスは、プログラムが監視するために登録できる通知を定義します。
通知メカニズムの目玉は、通知センター(NSNotificationCenter) として知られているプロセスごとのシングルトンオブジェクトです。オブジェクトが通知を投稿すると、それは通知センターに行き、家と通知のための放送センターをクリアするように機能します。アプリの他の場所のイベントについて知る必要があるオブジェクトは、そのイベントが発生したときに通知されるように通知センターに登録されています。通知センターは、その監視者に通知を同期的に配信しますが、通知キュー(NSNotificationQueue) を使用して非同期的に通知を投稿できます。
通知オブジェクト
通知は NSNotification クラスのインスタンスで表されます。通知オブジェクトは、state: の何ビットかのユニークな名前、ポスティング·オブジェクト、および userInfo 辞書と呼ばれる(オプションで)付帯情報辞書を含みます。通知が興味を持っている監視者に配信されると、通知オブジェクトは、通知を処理するメソッドの引数として渡されます。
通知を観察する
通知を監視するには、シングルトン NSNotificationCenter インスタンスを取得し、それに addObserver:selector:name:object: メッセージを送信します。通常、この登録ステップは、アプリが起動した直後に行われます。addObserver:selector:name:object: メソッドの2番目のパラメータは、通知を処理するために実装するメソッドだと言う事を特定するセレクタです。メソッドは、以下のシグネチャを持つ必要があります。
- (void)myNotificationHandler:(NSNotification *)notif;
この処理するメソッドでは、応答であなたを助けるために、通知からの userInfo 辞書(もしあれば)で特にデータを引き出して、情報を抽出できます。
通知を投稿
通知を投稿する前に、あなたの通知の名前と一意のグローバル文字列定数を定義する必要があります。取り決めは、名の2〜3文字のアプリ固有の接頭辞を使用することです。たとえば:
NSString *AMMyNotification = @"AMMyNotication";
通知を投稿するには、シングルトンの NSNotificationCenter オブジェクトに、 postNotificationName:object:userInfo: (または同様の)メッセージを送ります。そのメソッドは通知センターに通知を送信する前に、通知オブジェクトを作成します。
前提条件の記事
関連記事
既出の議論
通知プログラミングのトピック
サンプルコードプロジェクト
HeadsUpUI
次の章
前の章