有没有办法知道一个对象是否已经注册为特定通知的观察者?在我的实现中,我必须动态地添加和删除观察者。由于某些原因,存在一个随机问题,即侦听器收到两次相同的通知。我知道我必须检查我的代码,但如果我知道这些信息,对我来说修复起来会更容易。谢谢。
发布于 2010-12-07 12:35:36
不是的。无法查询此信息。如果你需要它,你需要自己跟踪它。
发布于 2011-05-14 02:03:55
您可能需要研究一下NSNotificationQueue。这是来自苹果公司的概述。这听起来可以帮助你不再收到重复的通知:
NSNotificationQueue对象(或简称通知队列)充当通知中心(NSNotificationCenter实例)的缓冲区。虽然通知中心在发布时分发通知,但放入队列中的通知可以被延迟,直到当前通过run循环传递的结束或直到run循环空闲。还可以合并重复通知,以便即使发布了多个通知,也只发送一个通知。通知队列通常以先进先出( NSNotification)的顺序维护通知(NSNotification实例)。当通知上升到队列的前面时,队列将通知发送到通知中心,通知中心又将通知分派给所有注册为观察者的对象。
每个线程都有一个默认通知队列,该队列与任务的默认通知中心相关联。您可以创建自己的通知队列,并且每个中心和线程都有多个队列。
https://stackoverflow.com/questions/4373079
复制相似问题