Искам да имам множество наблюдатели на множество събития на един обект (отношение 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 към N (като C# събития) в iOS рамка освен
NSNotificationCenter
? - Кога трябва да се използва
NSNotificationCenter
и кога не? - Кога трябва да се използва изпълнение като това, което предлагам тук и кога не?