无法停止一次性通知?

时间:2014-01-17 16:53:49

标签: objective-c cocoa notifications nsnotificationcenter

好的,在这里感觉非常愚蠢 - 但由于某些原因我无法让我的对象停止接收通知!

我的init:方法中有一个非常基本的设置,它应该监听第一个通知,并在第一次收到时停止监听。 init:方法肯定只调用一次。

问题是在第一个后继续收到通知

   [[NSNotificationCenter defaultCenter] addObserverForName:kMyNotification
                                                     object:nil
                                                      queue:nil
                                                 usingBlock:^(NSNotification *note)
                                                           {

                                                              [NSLog(@"Got here"); 
                                                              [[NSNotificationCenter defaultCenter] removeObserver:self
                                                                                                              name:kMyNotification
                                                                                                            object:nil];
                                                           }];

为什么removeObserver:name:object:调用似乎没有任何效果?

1 个答案:

答案 0 :(得分:4)

试试这个:

__block id observer = [[NSNotificationCenter defaultCenter] addObserverForName:kMyNotification
                                                 object:nil
                                                  queue:nil
                                             usingBlock:^(NSNotification *note)
                                                       {

                                                          [NSLog(@"Got here"); 
                                                          [[NSNotificationCenter defaultCenter] removeObserver:observer
                                                                                                          name:kMyNotification
                                                                                                        object:nil];
                                                       }];