如何检索所有NSNotificationCenter观察员?

我想为给定的通知名称检索观察者列表(对象和select器)。 我知道这没有官方的API。 我也知道我可以inheritanceNSNotificationCenter来完成这个任务。 但有时候这不是一个可行的select,因为NSNotificationCenter的使用遍布整个代码甚至是二进制框架。

所以我正在寻找一个非官方的/私人的方式来做到这一点。 (因为只是debugging,所以没关系)

最后,苹果增加了一种打印所有通知中心观察员的方法:

po [NSNotificationCenter defaultCenter] 

它用名称,对象,观察者和选项打印逗号分隔列表:

 <NSNotificationCenter:0x7f997b307500> Name, Object, Observer, Options WebPreferencesRemovedNotification, 0x11165b680, 0x116c87ff8, 1400 UIApplicationWillEnterForegroundNotification, 0x11165b680, 0x7f997a838000, 1400 ... 

如果您不想子类NSNotificationCenter您可以重命名原始的addObserver:selector:name:object方法,并创build自己的这样的名称,并在那里添加观察员到一些数组,然后调用原来的重命名的方法。

看看下面的方法: class_addMethodclass_replaceMethodclass_getMethodImplementation

也看这个问题: 方法Swizzling

我不知道你为什么要观察员,但你可能会发现这个类是有用的,它会自动删除你的观察员,我认为可能是你想要的。 SFObservers