Я хочу иметь несколько наблюдателей за несколькими событиями одного объекта (отношения 1-к-N).
Механизм для выполнения этой задачи предоставляется NSNotificationCenter
. Механизм выглядит довольно излишним при использовании для моей проблемы.
Как бы я сделал это вручную без использования NSNotificationCenter
:
- (void)addDelegate:(id<DelegateProtocol>)delegate;
- (void)removeDelegate:(id<DelegateProtocol>)delegate;
для добавления и удаления наблюдателей из моего объекта.
- (void)someEventFired:(NSObject<NSCopying> *)eventData
{
for (id delegate in delegates) {
NSObject *data = [eventData copy];
[delegate someEventFired:data];
}
}
Этот механизм прямолинеен и прост в реализации, при этом объекты не должны совместно использовать дополнительные строки.
- Существует ли официальный шаблон для делегатов 1-to-N (например, событий C#) в среде iOS помимо
NSNotificationCenter
? - Когда следует использовать
NSNotificationCenter
, а когда нет? - Когда следует использовать реализацию, подобную той, которую я предлагаю здесь, а когда нет?