Подтвердить что ты не робот

Как я могу прослушивать все уведомления, отправленные в центр iOS NSNotificationCenter defaultCenter?

Я хочу прослушать все уведомления, отправленные в центр по умолчанию. Как государственные, так и частные. Кто-нибудь знает, как я могу это сделать?

4b9b3361

Ответ 1

Использовать NSNotificationCenter addObserverForName:object:queue:usingBlock: ИЛИ addObserver:selector:name:object: метод и передать nil для имени и объекта.

Пример

Следующий код должен выполнить задание:

- (void)dumpNotifications {
    NSNotificationCenter *notifyCenter = [NSNotificationCenter defaultCenter];
    [notifyCenter addObserverForName:nil 
                              object:nil 
                               queue:nil 
                          usingBlock:^(NSNotification *notification){
                             // Explore notification
                             NSLog(@"Notification found with:"
                                    "\r\n     name:     %@"
                                    "\r\n     object:   %@"
                                    "\r\n     userInfo: %@", 
                                    [notification name], 
                                    [notification object], 
                                    [notification userInfo]);
                          }];
}

Документы

Вот документы на addObserverForName:object:queue:usingBlock:. В частности, см. Параметры имени и obj.

addObserverForName: Объект: очереди: usingBlock:

Добавляет запись в таблицу отправки получателей с уведомлением очередь и блок для добавления в очередь, а также дополнительные критерии: имя уведомления и отправитель.

- (id)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *))block

Параметры

имя

Название уведомления, для которого регистрируется наблюдатель; что есть, только уведомления с этим именем используются для добавления блока к очереди операций. Если вы передаете нуль, центр уведомлений не использует имя уведомления, чтобы решить, следует ли добавить блок к очереди операций.

OBJ

Объект, чьи уведомления вы хотите добавить в блок очереди операций. Если вы передаете нуль, центр уведомлений не использует отправителю уведомлений, чтобы решить, следует ли добавить блок к очереди операций.

очереди

Операционная очередь, к которой должен быть добавлен блок. Если вы пройдете ноль, блок выполняется синхронно в потоке проводки.

блок

Блок, который будет выполняться при получении уведомления. Блок копируется центром уведомления и (копией), хранящимся до тех пор, пока регистрация наблюдателя удаляется. Блок принимает один аргумент:

уведомление

Уведомление.