Доза NSNotificationCenter, уведомление об отправке от Наблюдателя при добавлении Заказа? - PullRequest
0 голосов
/ 11 мая 2018

Добавление Observer как:

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 уведомление?

1 Ответ

0 голосов
/ 11 мая 2018

NSNotificationCenter поддерживает своих наблюдателей в массиве, который он повторяет каждый раз, когда публикуется уведомление.Таким образом, наблюдатели будут выполняться в порядке их добавления, как вы видите в своем эксперименте.Тем не менее, это деталь реализации и не задокументировано или гарантированное поведение.Если вам нужно вызывать методы в определенном порядке, то NSNotificationCenter - не правильный инструмент.Вы должны создать своего собственного диспетчера, который называет вещи в нужном вам порядке и позволяет ему наблюдать NSNotificationCenter.

...