Когда использовать NSNotificationCenter

Я хочу иметь несколько наблюдателей за несколькими событиями одного объекта (отношение 1-к-N).

Механизм для выполнения этой задачи предоставляетсяNSNotificationCenter. Механизм выглядит довольно излишним при использовании для моей проблемы.

Как бы я сделал это вручную без использования NSNotificationCenter:

- (void)addDelegate:(id)delegate;
- (void)removeDelegate:(id)delegate;

для добавления и удаления наблюдателей из моего объекта.

- (void)someEventFired:(NSObject *)eventData
{
    for (id delegate in delegates) {
        NSObject *data = [eventData copy];
        [delegate someEventFired:data];
    }
}

Этот механизм прямолинеен и прост в реализации, при этом объекты не должны совместно использовать дополнительные строки.

  • Существует ли официальный шаблон для делегатов 1-to-N (например, событий C#) в среде iOS помимо NSNotificationCenter?
  • Когда следует использовать NSNotificationCenter, а когда нет?
  • Когда следует использовать реализацию, подобную той, которую я предлагаю здесь, а когда нет?

13
задан Etan 31 May 2012 в 15:20
поделиться