延迟NSNotification直到另一个完成

时间:2015-01-20 16:49:37

标签: ios nsnotifications

我有一个全局函数,可以从服务器下载JSON数据并解析它。它通常需要大约5秒钟才能运行,因此我们在后台执行此操作,然后发送通知kNotificationDownloadSuccessful

通知的几个观察者之一是MapView,它根据收到的数据重新绘制注释。显然,这必须在通过接收kNotificationDownloadSuccessful告知数据准备就绪后发生。

某些案例中,我想将地图重新​​置于新数据的中心位置。显然,在地图完成绘图注释之前不会发生这种情况。所以我实现了第二个通知kNotificationMapLocationSet,如果调用者想要发生这个通知,它会触发,并且地图会监听它。

现在问题...... kNotificationMapLocationSet正在kNotificationDownloadSuccessful之前收到,这真的很有道理。 Map不能简单地重新发布它,或者只是调用它的本地重中心方法,因为它不知道是否需要重定位器。

我考虑让kNotificationMapLocationSet在Map中设置一个标志,然后让kNotificationDownloadSuccessful上的处理程序查看它并根据需要重新定位。但是,如果以当前顺序收到消息 ,则会失败。

那么有没有办法订购通知? IE,延迟这个,直到那个发射?

1 个答案:

答案 0 :(得分:-1)

我相信您可以使用addObserver来检查NSNotification何时完成。如果有效,请告诉我:

NotificationCenter defaultCenter] addObserver:self
     selector:@selector(callNextNotification:) name:@"notificationSent" object:nil];

看起来您已经将NSNotification子类化了,但这仍然有用。