如何检索所有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_addMethod
, class_replaceMethod
, class_getMethodImplementation
。
也看这个问题: 方法Swizzling
我不知道你为什么要观察员,但你可能会发现这个类是有用的,它会自动删除你的观察员,我认为可能是你想要的。 SFObservers