【发布时间】:2011-03-02 07:17:37
【问题描述】:
一个关于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 发布通知,但同一通知有两个观察者。那么执行顺序是什么?
提前感谢您的帮助。
【问题讨论】:
-
我不是专家,但我会假设 A 将在 B 之前执行,但您始终可以在控制器中
NSLog并查看该顺序。另一方面,我很好奇你关于一个通知的多个观察者的另一个问题的答案。我现在有这种情况,只有一个在开火,所以我也想知道...... -
没关系,我想通了。单个通知可以拥有任意数量的观察者。
标签: objective-c ios xcode nsnotifications nsnotificationcenter