【问题标题】:Catch errors for NSNotification postNotification捕获 NSNotification postNotification 的错误
【发布时间】:2015-05-19 13:03:40
【问题描述】:
如果NSNotificationCenterpostNotificationName由于未找到观察者或任何其他原因未能发布,如何发现?
- 就我而言,有时
postNotificationName 在添加观察者之前被调用,所以我想处理这种情况
我尝试的是一些不好的解决方案:
我创建了一个全局NSArray,当postNotificationName 执行时,我在该数组中插入通知详细信息,然后当观察者实际收到通知时清空该数组,我稍后在其他类中检查它是否为空,如果不是,则 postNotificationName 失败。
【问题讨论】:
标签:
ios
objective-c
iphone
nsnotificationcenter
【解决方案1】:
NSNotificationCenter 并不是这样工作的。它作为一种一对多的方式将消息 (NSNotifications) 分发给将自己添加为侦听器的其他对象。仅仅因为通知被一个听众收到,并不意味着它被所有人收到。如果没有类注册为侦听器,则帖子不会“无法发布”,只是没有对象可以听。
听起来您正在寻找的是一个排队系统。忘记NSNotificationCenter,只需使用NSArray 作为排队机制,或者从那里获得更详细的信息。
【解决方案2】:
我不太确定它是否适合你,但你可以在添加之前删除观察者。
我不认为会有一些简单的方法来检查观察者是否真的收到了通知。除此之外,您的方法是正确的。