Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone NSNotificationCenter问题_Iphone_Cocoa - Fatal编程技术网

Iphone NSNotificationCenter问题

Iphone NSNotificationCenter问题,iphone,cocoa,Iphone,Cocoa,有没有办法知道某个对象是否已注册为特定通知的观察者? 在我的实现中,我必须动态地添加和删除观察器。出于某种原因,存在一个随机问题,侦听器会收到两次相同的通知。我知道我必须检查我的编码,但如果我能知道这些信息,我会更容易修复。 谢谢。否。无法查询此信息。如果您需要它,您需要自己跟踪它。您可能需要查看NSNotificationQueue。以下是苹果公司的概述。听起来这可以帮助您停止接收重复通知: NSNotificationQueue对象(或仅 通知队列)充当缓冲区 对于通知中心(的实例) NSN

有没有办法知道某个对象是否已注册为特定通知的观察者? 在我的实现中,我必须动态地添加和删除观察器。出于某种原因,存在一个随机问题,侦听器会收到两次相同的通知。我知道我必须检查我的编码,但如果我能知道这些信息,我会更容易修复。
谢谢。

否。无法查询此信息。如果您需要它,您需要自己跟踪它。

您可能需要查看NSNotificationQueue。以下是苹果公司的概述。听起来这可以帮助您停止接收重复通知:

NSNotificationQueue对象(或仅 通知队列)充当缓冲区 对于通知中心(的实例) NSNotificationCenter)。鉴于 通知中心分发 发布通知时, 放入队列的通知 可以推迟到会议结束 电流通过运行回路或 直到运行循环空闲重复 通知也可以合并,以便 只发送一个通知 虽然需要多个通知 已发布。通知队列维护 通知(应用程序实例) (通知)通常在第一个 先进先出(FIFO)顺序。当 通知上升到最前面 队列,队列将其发布到 通知中心 向所有人发送通知 注册为观察员的对象

每个线程都有一个默认值 通知队列,即 与默认值关联 任务的通知中心。你 您可以创建自己的通知 队列,并且每个队列具有多个队列 中心和螺纹


谢谢你的回答。我做了一个测试,在同一个对象中用同一个处理程序注册了两个观察者,并且调用了两次。我以为通知中心会解决这种情况。我将尝试跟踪这一点,但我仍然认为,如果我能向中心查询,那将是一件好事。再次感谢。有一个解决办法给乔治。正如SteveB所指出的那样。查看另一个帖子:@Wayne,这是一个完全不同的问题。Jorge的问题是关于两次注册相同的通知
NSNotificationQueue
是关于将多个已发送的通知合并为一个通知。这两个问题没有关系。凯文,你说得对。我被这两个弄糊涂了。对不起,史蒂夫,谢谢你遮光。你帮我找到了这个帖子:@Wayne Lo,太好了。很乐意帮忙。