通知


通知 は、フォーカスを取得しているウィンドウや閉じつつあるネットワーク接続など、イベントに関する情報をカプセル化します。イベント (たとえば、そのウィンドウが閉じようとしていることを知る必要のあるファイル) について知る必要があるオブジェクトは、そのイベントが発生したときに通知を受けたい通知センターに登録されます。イベントが発生すると、通知センターに通知が送信され、通知センターは、通知をすべての登録済みオブジェクトにブロードキャストします。オプションで、通知は通知キューに入れられ、それは通知を通知センターに遅延して送信し、指定された通知と、指定した特定の基準に従って類似する通知を統合します。


通知とその理由


オブジェクト間で情報を渡す標準的な方法は、メッセージをパスする事です。1 つのオブジェクトは別のオブジェクトのメソッドを呼び出します。ただし、メッセージのパスでは、メッセージを送信しているオブジェクトは受信者が誰で、どのメッセージに応答したのかを知る必要があります。時には、2 つのオブジェクトのこの緊密な結合は望ましくありません。最も顕著なのは、そうでなければ独立した 2 つのサブシステムを結合するためです。これらのケースでは、ブロードキャストモデルが導入されます。オブジェクトは通知を送信し、通知は、NSNotificationCenter オブジェクトまたは単に通知センターを介して適切な監視者に送信されます。


NSNotification オブジェクト (通知と呼ばれる) には、名前、オブジェクト、および optional の辞書が含まれます。名前は、通知を識別するタグです。オブジェクトは、通知のポスターがその通知の監視者に送信したいオブジェクトであり、通常、通知それ自体を送信したオブジェクトです。辞書には、イベントに関する追加情報が含まれている場合があります。


Notification names: 通知名 (Notification names) は通常、 NSWindowDidBecomeMainNotification などの定数文字列変数として定義されます。通常、文字列の値は変数名に似ています。ただし、コード内で文字列値を使用しないでください。変数名を常に使用する必要があります (例については、ローカル通知の登録 を参照の事)。

多くの Cocoa フレームワークは、オブジェクトが関心のあるイベントに反応するように通知を広範囲に利用します。各クラスから送信される通知は、クラスのリファレンスドキュメントの "通知" セクションで説明されています。


オブジェクトが通知を送信することがあります。他のオブジェクトは、通知センターに、送信時に監視者として通知を受け取るように自分自身を登録することができます。通知センターは、登録された監視者 (存在する場合) へのブロードキャスト通知を処理します。通知を送信するオブジェクト、通知に含まれるオブジェクト、および通知の監視者は、すべて異なるオブジェクトまたは同じオブジェクトである可能性があります。通知を送信するオブジェクトは、監視者について何も知る必要はありません。他方、監視者は、少なくとも通知名と、もしあれば、辞書へのキーを知る必要があります。


通知と委任 (デリゲート)


通知システムの使用は、委任 (デリゲート) の使用と同様ですが、以下の点が異なります。


前の章 次の章





目次
Xcode の新機能

  • 序言
  • この文書の構成
  • 通知
  • 通知とその理由
    通知と委任 (デリゲート)
  • 通知センター
  • NSNotificationCenter
    NSDistributedNotificationCenter
  • 通知キュー
  • 通知キューの基本
    通知を非同期的に通知
    出来るだけ早く送信 (ASAP)
    アイドル中の送信
    直ちに送信
    通知の統合
  • 通知の登録
  • ローカル通知の登録
    分散通知の登録
    監視者の登録解除
  • 通知の送信
    ローカル通知の送信
    分散通知の送信
  • 特定のスレッドへ通知を配信
  • 文書改訂履歴

  • 関連した文書

    スレッドプログラミングガイド













    トップへ(通知プログラミングトピックス)












    トップへ(通知プログラミングトピックス)












    トップへ(通知プログラミングトピックス)












    トップへ(通知プログラミングトピックス)












    トップへ(通知プログラミングトピックス)












    トップへ(通知プログラミングトピックス)












    トップへ(通知プログラミングトピックス)












    トップへ(通知プログラミングトピックス)












    トップへ(通知プログラミングトピックス)












    トップへ(通知プログラミングトピックス)












    トップへ(通知プログラミングトピックス)












    トップへ(通知プログラミングトピックス)












    トップへ(通知プログラミングトピックス)












    トップへ(通知プログラミングトピックス)












    トップへ(通知プログラミングトピックス)