Объекты, которые хотят получать уведомления, должны зарегистрироваться для получения уведомлений в центре уведомлений.После этого, когда уведомление отправляется в центр уведомлений, центр уведомлений проверяет его по всем зарегистрированным фильтрам, и для каждого соответствующего фильтра будут выполняться соответствующие действия.
В данном случае «фильтр»пара (имя уведомления, объект уведомления).Объект nil
в фильтре эквивалентен любому объекту (объект уведомления игнорируется при сопоставлении).Имя обязательно.
Пример:
/* Subscribe to be sent -noteThis:
* whenever a notification named @"NotificationName" is posted to the center
* with any (or no) object. */
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(noteThis:)
name:@"NotificationName"
object:nil];
/* Post a notification. */
[nc postNotificationName:@"NotificationName" object:self userInfo:someDict];
/* Handle a notification. */
- (void)noteThis:(NSNotification *)note
{
id object = [note object];
NSDictionary *userInfo = [note userInfo];
/* take some action */
}
Существует более современный API, использующий очереди и блоки, но я считаю, что старый API проще иллюстрировать и объяснять.