Центр уведомлений доставляет сообщения синхронно, что означает, что метод postNotification:
не возвращается, пока все объекты, зарегистрированные для получения уведомления, не обработают уведомление.Другими словами, вы можете думать о том, что не занимает много времени между отправкой уведомления и получением уведомления.
Есть несколько дополнительных вещей, о которых вам нужно знать:
Уведомленияполучены в той же ветке, в которой они размещены.Если вы переместите уведомление в основной поток с помощью performSelectorOnMainThread:withObject:waitUntilDone:
, вы можете прервать синхронное поведение, если для waitUntilDone
установлено значение NO
.Если для waitUntilDone
установлено значение YES
, поток, передающий уведомление, будет блокироваться до тех пор, пока основной поток не завершит выполнение указанного действия.
Нет гарантии порядка, в котором уведомление будет полученоего наблюдатели.Если в одном уведомлении есть несколько наблюдателей, не полагайтесь на тех наблюдателей, которые получают уведомление в каком-либо конкретном порядке.
Учитывая вышеизложенное и знание того, какой поток публикует уведомления в вашем приложении, а какой поток должен их обработать, вы должны быть в состоянии выяснить, будет ли работать шаблон наблюдателя для вас.