2014-01-17 157 views
2

好吧,感覺這裏很愚蠢 - 但由於某種原因,我無法讓我的對象停止接收通知!無法停止一次性通知?

我在我的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:通話似乎爲什麼不來有什麼影響?

回答

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]; 
                 }]; 
+1

事實上,問題是,你需要刪除當觀察者被註冊使用id基於塊的回調註冊的觀察者返回。你不能混合舊的和新的添加/刪除方法。 –

+0

D'oh !!!感謝您指出 - 僅在5分鐘前在文檔中找到它: - / – Jay