3

关于NSNotification......如果我NSNotifications在一个方法中发布两个,并且它们被不同的对象观察到,那么选择器方法的执行顺序是什么?

例如,如果我有三个控制器 - 海报、接收器 A 和接收器 B。在海报控制器的功能中,我执行以下操作:

[[NSNotificationCenter defaultCenter] postNotificationName:@"ReceiverADoSomething" object:self];
[[NSNotificationCenter defaultCenter] postNotificationName:@"ReceiverBDoSomething" object:self];

在接收者 A 的 viewDidLoad 方法中:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(workToDoByA:) name:@"ReceiverADoSomething" object:nil];

在接收者 B 的 viewDidLoad 方法中:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(workToDoByB:) name:@"ReceiverADoSomething" object:nil];

workToDoByA先做后继workToDoByB?还是一起被处决?

另一种情况......如果我有海报 A 发布通知,但有两个观察者对同一通知。那么执行顺序是什么?

在此先感谢您的帮助。

4

1 回答 1

6

苹果文档的摘录:

通知中心同步向观察者发送通知。换句话说, postNotification: 方法在所有观察者都收到并处理通知之前不会返回。要异步发送通知,请使用 NSNotificationQueue。在多线程应用程序中,通知总是在发布通知的线程中传递,这可能与观察者注册自己的线程不同。

postNotificationName 的策略相同。

于 2011-09-27T11:42:17.573 回答