如果NSNotificationCenter
postNotificationName
由于观察者或任何其他原因未能发布,如何捕获?
postNotificationName
在添加观察者之前被调用,所以我想处理这样的情况我尝试的是一些不好的解决方案:
我创建了一个全局NSArray
,当执行postNotificationName
时,我在该数组中插入通知详细信息,然后在观察者实际收到通知时清空该数组,我稍后会在其他类中进行检查查看它是否为空,如果不是postNotificationName
则失败。
答案 0 :(得分:1)
真的不是NSNotificationCenter
的工作方式。它充当将消息(NSNotification
s)分发给将自己添加为侦听器的其他对象的一对多方式。仅仅因为一个听众收到了通知,并不意味着所有人都收到了通知。如果没有一个类被注册为监听器,那么该帖子并没有“未发布”,只是没有任何对象可供收听。
听起来你正在寻找的是一个排队系统。忘记NSNotificationCenter
并使用您的NSArray
作为排队机制,或者从那里获得更多详细信息。
答案 1 :(得分:0)
我不太确定它是否适合您,但您可以在添加之前移除观察者。
我认为不会有一些简单的方法来检查观察者是否真的收到了通知。除了这一切,你的方法是正确的。