我怎样才能听到发送到iOS NSNotificationCenter的默认中心的所有通知?

我想听所有派发到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:的文档addObserverForName:object:queue:usingBlock: 具体来说,请参阅名称obj参数。

addObserverForName:对象:队列:usingBlock:

向接收者的调度表添加一个条目,其中包含通知队列和要添加到队列中的块,以及可选条件:通知名称和发件人。

- (id)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *))block

参数

名称

注册观察员的通知的名称; 也就是说,只有具有这个名字的通知被用来将该块添加到操作队列中。 如果您通过nil,通知中心不会使用通知名称来决定是否将该块添加到操作队列中。

OBJ

要将其通知添加到操作队列的对象。 如果您通过nil,通知中心不会使用通知发件人来决定是否将该块添加到操作队列中。

队列

应该添加块的操作队列。 如果你通过nil,块在发布线程上同步运行。

收到通知时要执行的块。 该块由通知中心复制,并保存(副本),直到观察者注册被删除。 该块有一个参数:

通知

通知。