iPhone - 测试是否存在通知

Spa*_*Dog 20 iphone

在某个代码中,可以添加类似的内容

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomething) name:@"Hello" object:nil];   
Run Code Online (Sandbox Code Playgroud)

如何测试此通知是否已在队列中处于活动状态或已被删除,以防止添加重复?

谢谢.

tc.*_*tc. 31

如果您的意思是"测试您是否已经注册为通知的观察员",我认为除了发布通知并看到您收到回调(可能带来灾难性后果)之外,还有一种简单的方法.

如果存在双重添加的危险,我通常[[NSNotificationCenter defaultCenter] removeObserver:self name:foo object:bar]在添加之前使用.

注册通知不会发生在队列中.

  • 在不知道是否需要移除观察者的情况下移除观察者不是危险的吗?是不是像发布已经发布的对象?不会崩溃的应用程序? (4认同)
  • 1.它不像双释放/双免费,因为NSNotificationCenter不保留"目标"或"对象"(可能它保留"名称").2. NSNotificationCenter跟踪(目标,选择器,名称,对象)元组.它*必须*,因为它必须知道当你调用removeObserver:或removeObserver:name:object:时要删除的内容.3."删除"方法通常意味着"如果没有添加就不要做任何事情(例如` - [NSMutableSet removeObjectForKey:]`,` - [NSArray removeObject:]`) (4认同)
  • @数字机器人;我一直这样做。它不会崩溃。 (2认同)