我遇到了一个奇怪的问题。
我有一种通过调用通知中心发送通知的方法,如下所示:
[[NSNotificationCenter defaultCenter] postNotificationName:@"NIDNewDataSetNotification" object:self];
如果我在发送通知之前的NS时间,我发现它每秒发送一次,就像它应该的那样。
我在另一个对象中有一个方法,它将自己添加为观察者,如下所示:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveDataNotification:) name:@"NIDNewDataSetNotification" object:nil];
然而,通过NSLogging时间,我看到它每秒收到四次通知(所有四次都在.001秒内)。
没有其他通知被发送。如果我注释掉发送通知的行,那么捕获通知的方法就不会被调用。
有什么想法吗?
答案 0 :(得分:6)
我可以想到两种可能发生这种情况的情况:
1)您是否以某种方式多次注册通知?也许在你注册之前抛出一个NSLog(@"registering...")
声明,以确保你只看到一次。
2)您是否取消注册活动?可以打破还是不打电话?也许在那里放置一个NSLog语句以确保它被调用,并确保你删除观察者以获得正确的委托&通知。
答案 1 :(得分:0)
是的,我怀疑你每次设置观察者时都会重新注册,而不是在你取下它时取消注册。