我希望对单个对象的多个事件(一对 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];
}
}
这种机制直接且易于实现,无需对象共享额外的字符串。
- 除了
NSNotificationCenter
? - 什么时候应该
NSNotificationCenter
使用,什么时候不应该使用? - 什么时候应该使用像我在这里建议的那样的实现,什么时候不应该使用?