将观察者添加为:
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(method1) name:UIApplicationDidEnterBackgroundNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(method2) name:UIApplicationDidEnterBackgroundNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(method3) name:UIApplicationDidEnterBackgroundNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(method4) name:UIApplicationDidEnterBackgroundNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(method5) name:UIApplicationDidEnterBackgroundNotification object:nil];
});
当应用程序进入后台时,我将其称为添加顺序:
[method1 called]
[method2 called]
[method3 called]
[method4 called]
[method5 called]
我知道一个方法会在线程中调用通知,我在哪里可以找到观察者首次添加到NSNotificationCenter时将首先接收通知的剂量?
最佳答案
NSNotificationCenter
在数组中维护其观察者,该数组在每次发布通知时进行迭代。因此,观察者将按照添加顺序执行,就像您在实验中看到的那样。但是,这是一个实现细节,没有记录或保证的行为。如果您需要按特定顺序调用方法,那么NSNotificationCenter
不是正确的工具。您应该创建自己的调度程序,以所需的顺序调用事物,并使其遵循NSNotificationCenter
。
关于ios - 剂量NSNotificationCenter通过观察者添加订单来发送通知吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50284643/