通知


通知は、プログラム内のイベントを通知するために1つ以上の監視オブジェクトに送信されるメッセージです。ココアの通知メカニズムは、ブロードキャストモデルに従います。これは、そのイベントについて知りたい任意の数のオブジェクトと通信するためのプログラムイベントを開始し、また処理するオブジェクトのための方法です。オブザーバー(監視者) として知られている、通知の受信者は、イベントに応じて、独自の外観、動作、および状態を調整できます。オブジェクトが送信する(または 投稿 する)通知は、それらの監視者が何であるかを知る必要はありません。通知は、このようにプログラムの中で協調と結束を達成するための強力なメカニズムです。それは、プログラム(このような依存関係は、これらのオブジェクトの再利用性を減少させます)内のオブジェクト間の強い依存関係の必要性を低減します。Foundation、AppKit、その他の Objective-C フレームワークの多くのクラスは、プログラムが監視するために登録できる通知を定義します。


通知メカニズムの目玉は、通知センター(NSNotificationCenter) として知られているプロセスごとのシングルトンオブジェクトです。オブジェクトが通知を投稿すると、それは通知センターに行き、家と通知のための放送センターをクリアするように機能します。アプリの他の場所のイベントについて知る必要があるオブジェクトは、そのイベントが発生したときに通知されるように通知センターに登録されています。通知センターは、その監視者に通知を同期的に配信しますが、通知キュー(NSNotificationQueue) を使用して非同期的に通知を投稿できます。


notificationcenter_2x



通知オブジェクト


通知は 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: (または同様の)メッセージを送ります。そのメソッドは通知センターに通知を送信する前に、通知オブジェクトを作成します。


前提条件の記事

セレクタ

メッセージ


関連記事

デリゲート(Delegate)

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

シングルトン


既出の議論

通知プログラミングのトピック


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

HeadsUpUI






次の章
前の章
目次
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