文書   >   Foundation   >   Notifications   >   NotificationCenter   >   addObserver(forName:object:queue:using:)


インスタンスメソッド


addObserver(forName:object:queue:using:)


通知キューを含む通知センターの急送テーブルに、エントリを追加し、通知キューにブロックを追加し、また optional の通知名と送信者を含みます。





宣言


func addObserver(forName name: NSNotification.Name?, 
          object obj: Any?, 
           queue: OperationQueue?, 
           using block: @escaping (Notification) -> Void) -> NSObjectProtocol


パラメータ


name監視者を登録するための通知の名前。つまり、この名前の通知のみが操作キューにブロックを追加するために使用されます。

nil を渡すと、通知センターは通知の名前を使用してブロックを操作キューに追加するかどうかを決定しません。
obj監視者が受信したいオブジェクトの通知。つまり、この送信者によって送信された通知のみが監視者に配信されます。

nil を渡すと、通知センターは通知の送信者を使用して監視者に配信するかどうかを決定しません。
queueblock を追加すべき操作キュー。

nil を渡すと、ブロックは通知スレッド上で同期して実行されます。
block通知を受け取ったときに実行されるブロック。

ブロックは、監視者登録が削除されるまで、通知センターおよび (コピー) によってコピーされます。

ブロックには 1 つの引数があります:
notification通知。


戻り値


監視者として機能する opaque (不透明な) オブジェクト。


議論


指定された通知が 2 つ以上の監視者ブロックをトリガする場合、ブロックはすべて互いに (ただしそれらの指定されたキューまたは現在のスレッド上で) 同時に実行されることがあります。


以下の例は、ロケール変更通知を受信するために登録する方法を示しています。


let center = NSNotificationCenter.defaultCenter()
let mainQueue = NSOperationQueue.mainQueue()
self.localeChangeObserver = center.addObserverForName(NSCurrentLocaleDidChangeNotification,
	 object: nil, queue: mainQueue) { (note) in
    print("The user's locale changed to: \(NSLocale.currentLocale().localeIdentifier)")
}


監視の登録を解除するには、このメソッドによって返されたオブジェクトを removeObserver(_:) に渡します。 addObserver(forName:object:queue:using:) で指定されたオブジェクトが全て割り当て解除される前に、 removeObserver(_:) または removeObserver(_:name:object:) を呼び出さなければなりません。


let center = NSNotificationCenter.defaultCenter()
center.removeObserver(self.localeChangeObserver)


別の一般的なパターンは、以下の例のように、監視ブロック内から監視者を削除して 1 回限りの通知を作成することです。


let center = NSNotificationCenter.defaultCenter()
let mainQueue = NSOperationQueue.mainQueue()
var token: NSObjectProtocol?
token = center.addObserverForName("OneTimeNotification", object: nil, queue: mainQueue) { (note) in
    print("Received the notification!")
    center.removeObserver(token!)
}


以下も見よ





通知監視者の追加と削除





目次
Xcode の新機能

  • 言語:Swift
  • SDK:
  • iOS 4.0+
    macOS 10.6+
    tvOS 9.0+
    watchOS 2.0+
  • フレームワーク
  • Foundation
  • 宣言
  • パラメータ
  • 戻り値
  • 議論
  • 以下も見よ












  • トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )












    トップへ(Swift Foundation )