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
Благодаря.. с notification.name всичко е наред. Имам неправилна потребителска информация и това доведе до това, че известието изобщо не се извиква. - person Martin Perry; 25.08.2014