将观察者添加为:

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/

10-12 00:18