【问题标题】: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】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2022-01-18
      • 2021-07-26
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多