我正在使用 NSNotificationCenter 对象。我需要知道所有的听众和他们收听的事件。我可以做些什么来获得此列表吗?
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 回答