【发布时间】:2010-09-26 21:16:29
【问题描述】:
在代码中的某个时刻,可能会添加类似的内容
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomething) name:@"Hello" object:nil];
如何测试此通知是否已在队列中处于活动状态或已被删除,以防止添加重复?
谢谢。
【问题讨论】:
标签: iphone
在代码中的某个时刻,可能会添加类似的内容
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomething) name:@"Hello" object:nil];
如何测试此通知是否已在队列中处于活动状态或已被删除,以防止添加重复?
谢谢。
【问题讨论】:
标签: iphone
如果您的意思是“测试您是否已经注册为通知的观察者”,我认为除了发布通知并看到您收到回调(可能会产生灾难性影响)之外,没有其他简单的方法。
如果有双重添加的危险,我通常在添加之前使用[[NSNotificationCenter defaultCenter] removeObserver:self name:foo object:bar]。
注册通知不会发生在队列中。
【讨论】:
-[NSMutableSet removeObjectForKey:], -[NSArray removeObject:])
在添加之前移除观察者:
How to avoid adding multiple NSNotification observer?
对于单元测试,您应该模拟 NSNotificationCenter,因为它是依赖项。
【讨论】: