在一个代码中的一些点,可以加入像iPhone - 测试是否通知存在
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomething) name:@"Hello" object:nil];
我如何测试,如果该通知已经活跃在队列或已被删除,以防止添加重复?
谢谢。
在一个代码中的一些点,可以加入像iPhone - 测试是否通知存在
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomething) name:@"Hello" object:nil];
我如何测试,如果该通知已经活跃在队列或已被删除,以防止添加重复?
谢谢。
如果您的意思是“测试您是否已经注册为通知的观察者”,我不认为除了发布通知并看到您获得回调(可能会造成灾难性影响)之外, 。
如果存在双重添加的危险,我通常在添加之前使用[[NSNotificationCenter defaultCenter] removeObserver:self name:foo object:bar]
。
注册通知不会发生在队列中。之前将它添加
没有知道的情况下移除观察者是没有危险的g是否有观察员要移除?是不是像发布一个已经发布的对象?会不会导致应用程序崩溃? – SpaceDog 2010-09-27 01:31:05
@Digital Robot;我一直这样做。它不会崩溃。 – 2010-09-27 20:41:28
1.它不像双释放/双免费,因为NSNotificationCenter不保留“目标”或“对象”(大概它保留“名称”)。 2. NSNotificationCenter记录(目标,选择器,名称,对象)元组。它*必须*,因为它在调用removeObserver:或removeObserver:name:object:时必须知道要删除的内容。 3.“删除”方法通常意味着“如果没有添加任何东西(例如' - [NSMutableSet removeObjectForKey:]',' - [NSArray removeObject:]') – 2010-09-28 19:52:03
删除观察员:
How to avoid adding multiple NSNotification observer?
进行单元测试,你应该嘲笑NSNotificationCenter,因为它是依赖:
的可能的复制[如何避免添加多个NSNotification观察?](http://stackoverflow.com/questions/5658426/how-to-avoid-adding-multiple-nsnotification-observer) – 2016-01-04 12:59:07