NSNotificationCenter — те же наблюдатели с другим именем

Возможно ли связать один метод с разными именами в NSNotificationCenter?

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(Finish:) name:@"FinishDownload_data1" object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(Finish:) name:@"FinishDownload_data2" object:nil];

... и т.д

В моем коде, когда я вызываю уведомление, я передаю его имя и некоторые другие параметры в словарь userInfo.

Причина, по которой я хочу этого, заключается в том, что у меня есть события, генерируемые во время выполнения. Они имеют одинаковое тело, но отличаются только целью сохранения, в зависимости от _data#. Я хочу, чтобы каждая загрузка обрабатывалась в одном месте.

Проблема в том, что если я использую это, уведомление не вызывается.


person Martin Perry    schedule 25.08.2014    source источник
comment
Вы также можете использовать одно и то же имя уведомления (FinishDownload) в двух случаях, но передавать разные object или userInfo при передаче фактического уведомления. Использование userInfo было бы предпочтительнее, так как object обычно указывает отправителя уведомления.   -  person Cyrille    schedule 25.08.2014


Ответы (1)


Размещенный вами код будет работать для нескольких имен уведомлений. Вы можете сказать между ними в обратном вызове:

- (void)Finish:(NSNotification *)notification {
    if ([notification.name isEqualToString:@"FinishDownload_data1"]) {
        ...
    }
    else {
        ...
    }
}

Нет причин, по которым уведомление не будет вызвано. Вы уверены, что реализовали обратный вызов?

person Cyrille    schedule 25.08.2014
comment
Спасибо... с уведомлением.имя все в порядке. У меня неправильная информация о пользователе, и это привело к тому, что уведомление вообще не вызывалось. - person Martin Perry; 25.08.2014