关于NSNotification
的快速问题...如果我在方法中发布了两个NSNotifications
,并且它们被不同的对象观察到,那么选择器方法的执行顺序是什么?
例如,如果我有三个控制器 - 海报,接收器A和接收器B.在Poster控制器的功能中,我执行以下操作:
[[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发布通知,但有两个观察员发送相同的通知。那么执行顺序是什么?
提前感谢您的帮助。
答案 0 :(得分:4)
摘自Apple文档:
通知中心同步向观察者发送通知。换句话说,postNotification:方法在所有观察者都收到并处理通知之前不会返回。要异步发送通知,请使用NSNotificationQueue。在多线程应用程序中,通知始终在发布通知的线程中传递,这可能与观察者注册的线程不同。
相同的政策适用于postNotificationName。