0

我正在使用 NSNotificationCenter 对象。我需要知道所有的听众和他们收听的事件。我可以做些什么来获得此列表吗?

4

2 回答 2

0

没有; 为什么你需要知道?

通知的整个目标是创建一个松散耦合的观察者与通知者系统。“知道所有”的问题没有意义,因为很可能会有来自您根本没有编写的代码的通知的观察者(假设是系统通知)。

而且,当然,如果它是您创建的通知,它的名称对您的应用程序来说是唯一的,那么您还应该知道所有可能的观察者。

于 2011-06-27T20:35:55.410 回答
0

如果您只想调试哪些侦听器正在侦听哪些通知,则可以很容易地记录此信息:

NSLog(@"%@", [NSNotificationCenter defaultCenter].debugDescription);

或者

po [NSNotificationCenter defaultCenter]

将在调试器中打印出类似这样的内容:

<NSNotificationCenter:0x6080000c0070>
Name, Object, Observer, Options
NSWindowWillEnterFullScreenNotification, 0x7fff882e5958, 0x604000100cf0, 1400
NSAntialiasThresholdChangedNotification, 0x7fff882e5958, 0x100e00000, 1400
NSAntialiasThresholdChangedNotification, 0x7fff882e5958, 0x6040001e0300, 1400
NSAntialiasThresholdChangedNotification, 0x7fff882e5958, 0x100f1aa10, 1400
kCFLocaleCurrentLocaleDidChangeNotification, 0x7fff882e5958, 0x7fff882e5a38, 1001
...
于 2018-05-11T03:32:56.567 回答