针对NSNotification postNotification的捕获错误

时间:2015-05-19 13:03:41

标签: ios objective-c iphone nsnotificationcenter

如果NSNotificationCenter postNotificationName由于观察者或任何其他原因未能发布,如何捕获?

  • 在我的情况下,有时 postNotificationName在添加观察者之前被调用,所以我想处理这样的情况

我尝试的是一些不好的解决方案:

我创建了一个全局NSArray,当执行postNotificationName时,我在该数组中插入通知详细信息,然后在观察者实际收到通知时清空该数组,我稍后会在其他类中进行检查查看它是否为空,如果不是postNotificationName则失败。

2 个答案:

答案 0 :(得分:1)

真的不是NSNotificationCenter的工作方式。它充当将消息(NSNotification s)分发给将自己添加为侦听器的其他对象的一对多方式。仅仅因为一个听众收到了通知,并不意味着所有人都收到了通知。如果没有一个类被注册为监听器,那么该帖子并没有“未发布”,只是没有任何对象可供收听。

听起来你正在寻找的是一个排队系统。忘记NSNotificationCenter并使用您的NSArray作为排队机制,或者从那里获得更多详细信息。

答案 1 :(得分:0)

我不太确定它是否适合您,但您可以在添加之前移除观察者。

我认为不会有一些简单的方法来检查观察者是否真的收到了通知。除了这一切,你的方法是正确的。