DefaultCenterにディスパッチされたすべての通知を聞きたいのですが。パブリックとプライベートの両方。誰か私がこれを行う方法を知っていますか?
NSNotificationCenterの _addObserverForName:object:queue:usingBlock:
_ OR _addObserver:selector:name:object:
_ メソッドを使用して、名前とオブジェクトにnilを渡します。
次のコードがその仕事をするはずです:
_- (void)dumpNotifications {
NSNotificationCenter *notifyCenter = [NSNotificationCenter defaultCenter];
[notifyCenter addObserverForName:nil
object:nil
queue:nil
usingBlock:^(NSNotification *notification){
// Explore notification
NSLog(@"Notification found with:"
"\r\n name: %@"
"\r\n object: %@"
"\r\n userInfo: %@",
[notification name],
[notification object],
[notification userInfo]);
}];
}
_
これが _addObserverForName:object:queue:usingBlock:
_ に関するドキュメントです。特に、nameおよびobjパラメータを参照してください。
addObserverForName:object:queue:usingBlock:
通知キューとキューに追加するブロック、およびオプションの基準(通知名と送信者)を使用して、受信者のディスパッチテーブルにエントリを追加します。
- (id)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *))block
パラメータ
名前
オブザーバーを登録する通知の名前。つまり、この名前の通知のみがブロックを操作キューに追加するために使用されます。 nilを渡すと、通知センターは、通知の名前を使用してブロックを操作キューに追加するかどうかを決定しません。
obj
ブロックを操作キューに追加する通知のオブジェクト。 nilを渡すと、通知センターは、通知の送信者を使用して、ブロックを操作キューに追加するかどうかを決定しません。
キュー
ブロックを追加する必要がある操作キュー。 nilを渡すと、ブロックは投稿スレッドで同期的に実行されます。
ブロック
通知を受け取ったときに実行されるブロック。ブロックは通知センターによってコピーされ、オブザーバー登録が削除されるまで(コピー)保持されます。ブロックは1つの引数を取ります。
通知
通知。