文書   >   Foundation   >   Notifications   >   DistributedNotificationCenter
クラス
DistributedNotificationCenter
タスクの境界を越えて通知のブロードキャストを可能にする通知急送メカニズム。
概要
DistributedNotificationCenter インスタンスは、タスクのデフォルトの分散通知センターで通知用の登録をした他のタスクのオブジェクトに NSNotification オブジェクトをブロードキャストします。
主な属性
- 急送 (ディスパッチ) 表についての情報は、NotificationCenter の "クラスの概要" > "主な属性" を参照してください。
通知名と送信者に加えて、分散通知センターの急送テーブルエントリは、通知センターがいつ、その監視者に通知を配信するかを指定します。詳細については、postNotificationName(_:object:userInfo:deliverImmediately:) メソッド、通知配布の一時停止と再開、および DistributedNotificationCenter.SuspensionBehavior を参照してください。
よく使われるメソッド
デフォルトの分散通知センターにアクセスします。
addObserver(_:selector:name:object:suspensionBehavior:)
通知の配信が一次停止されたときに、指定された動作で通知を受け取るようにオブジェクトを登録します。
postNotificationName(_:object:userInfo:deliverImmediately:)
通知を作成して送信します。
removeObserver(_:name:object:)
オブジェクトが特定の通知を受信したくないことを指定します。
概要
各タスクには、default() クラスメソッドでアクセスするデフォルトの分散通知センターがあります。さまざまな型の分散通知センターが存在する可能性があります。現在、単一の型 (NSLocalNotificationCenterType) が存在します。この型の分散通知センターは、単一のコンピュータ上のタスク間で送信できる通知を処理します。異なるコンピュータ上のタスク間の通信は、分散オブジェクトプログラミングのトピックス を使用してください。
分散通知 を送信するのは高価な操作です。通知は、分散通知用に登録されたオブジェクトを持つすべてのタスクに通知を配布するシステム全体のサーバーに送信されます。通知の送信と通知が別のタスクに到着するまでの待ち時間は制限されません。実際、送信される通知が多すぎるとサーバーのキューがいっぱいになり、通知が破棄されることがあります。
分散通知は、タスクの実行ループを介して配信されます。タスクは、分散通知を受信するために、NSDefaultRunLoopMode などの "共通" モードの 1 つで実行ループを実行していなければなりません。macOS 10.3 以降で動作するマルチスレッドアプリケーションの場合、分散通知は常にメインスレッドに配信されます。OS X v10.2.8 以前で動作するマルチスレッドアプリケーションでは、分散通知 API を最初に使用したスレッド、ほとんどの場合はメインスレッドですが、それに通知が配信されます。
NSDistributedNotificationCenter は、安全な通信プロトコルを実装していません。分散通知を使用する場合は、通知で渡されたすべてのデータを信頼できないものとして処理する必要があります。安全なコーディングの実践に関する一般的なガイダンスについては、セキュリティの概要 を参照してください。
NSDistributedNotificationCenter オブジェクトを使用して、同じタスク内のスレッド間で通知を送信しないでください。代わりに 分散オブジェクトプログラミングトピックス または NSObject メソッドの performSelectorOnMainThread:withObject :waitUntilDone: を使用してください。Port オブジェクトを設定して、他のスレッドからメッセージを受信して配布することもできます。
トピックス
分散配布センターの取得
コンピュータのローカル通知センターを表すデフォルトの分散通知センターを返します。
class func forType(DistributedNotificationCenter.CenterType)
特定の通知センター型の分散通知センターを返します。
監視者の管理
func addObserver(Any, selector: Selector, name: NSNotification.Name?, object: String?)
監視者とセレクタ、および optional の通知名と送信者とともに、通知センターの急送表にエントリを追加します。
受信者の急送表に、特定の監視者と一時停止された通知動作、およびオプションの通知名と送信者を含むエントリを追加します。
func removeObserver(Any, name: NSNotification.Name?, object: String?)
受信者の急送表から一致するエントリを削除します。
通知の送信
func post(name: NSNotification.Name, object: String?)
通知を作成し、受信者に送信します。
func post(name: NSNotification.Name, object: String?, userInfo: [AnyHashable :
Any]? = nil)
情報を含む通知を作成し、受信者に送信します。
情報と即時配信指定子を含む通知を作成し、受信者に送信します。
情報を含む通知を作成し、受信者に送信します。
通知配信の一時停止と再開
通知配信を一時停止または再開します。
定数
struct DistributedNotificationCenter.Options
これらの定数は、postNotificationName(_:object:userInfo:options:) メソッドを使用して送信された通知の動作を指定します。
struct DistributedNotificationCenter.CenterType
この定数は、通知センター型を指定します。
enum DistributedNotificationCenter.SuspensionBehavior
これらの定数は、通知配信一時停止の動作の型を指定します。