1

我想知道多长时间从旨意通知得到通知取。NSNotificationCenter:如何长时间才能执行操作

的原因是,我想看看观察者模式是适合我。我不希望另一个视图控制器可以在通知发送和处理之前更改该值。我担心另一个进程(线程?)会更快,并且当它不应该时,该值将被覆盖。

回答

4

通知关注中心同步传递消息,这意味着postNotification:方法不会返回,直到注册为接收通知的所有对象都处理完通知为止。换句话说,您可以认为发布通知和接收通知之间没有时间。

有你需要知道的一些额外的东西:

通知是在其张贴在同一线程上接收。如果使用performSelectorOnMainThread:withObject:waitUntilDone:将通知移动到主线程,则可以在waitUntilDone设置为NO时中断同步行为。如果waitUntilDone设置为YES,则传递通知的线程将阻塞,直到主线程完成执行指定的操作。

没有在通知将通过其观察员接到订单的保证。如果一个通知有多个观察员,则不要依赖那些以任何特定顺序接收通知的观察员。

鉴于上述情况,并且知道哪个线程在应用程序中发布通知和线程需要处理它们,你应该能够找出观察者模式是否会为你工作。

+0

根据您的信息,它应该适用于我使用观察者模式。我只有一个线程(主线程),并且只有一个观察者(如果传递线程阻塞其他操作)。 – testing 2010-10-29 17:46:57

+0

这听起来对我来说很合适。如果你只有一个观察者,并且通知在主线程上发布和处理,那么它就像它得到的那样简单。如果您还没有创建任何其他访问该值的线程,则不应该有任何问题。 – 2010-10-29 20:16:30

0

您可以使用enqueueNotification用于细粒度在通知的处理控制,但最终我相信你可以遇到同样的问题,你已经表达了不管通知中心执行或不

相关问题