我有一个全局函数,可以从服务器下载JSON数据并解析它。它通常需要大约5秒钟才能运行,因此我们在后台执行此操作,然后发送通知kNotificationDownloadSuccessful
。
通知的几个观察者之一是MapView,它根据收到的数据重新绘制注释。显然,这必须在通过接收kNotificationDownloadSuccessful
告知数据准备就绪后发生。
在某些案例中,我想将地图重新置于新数据的中心位置。显然,在地图完成绘图注释之前不会发生这种情况。所以我实现了第二个通知kNotificationMapLocationSet
,如果调用者想要发生这个通知,它会触发,并且地图会监听它。
现在问题...... kNotificationMapLocationSet
正在kNotificationDownloadSuccessful
之前收到,这真的很有道理。 Map不能简单地重新发布它,或者只是调用它的本地重中心方法,因为它不知道是否需要重定位器。
我考虑让kNotificationMapLocationSet
在Map中设置一个标志,然后让kNotificationDownloadSuccessful
上的处理程序查看它并根据需要重新定位。但是,如果以当前顺序收到消息 ,则会失败。
那么有没有办法订购通知? IE,延迟这个,直到那个发射?
答案 0 :(得分:-1)
我相信您可以使用addObserver来检查NSNotification何时完成。如果有效,请告诉我:
NotificationCenter defaultCenter] addObserver:self
selector:@selector(callNextNotification:) name:@"notificationSent" object:nil];
看起来您已经将NSNotification子类化了,但这仍然有用。