2011-06-15 97 views
0
[[NSNotificationCenter defaultCenter] postNotificationName:kNotificationForbidAdvPost object:nil]; 

我定義postNotificationName:在.h文件中爲什麼我不能收到通知

林我的NSApplication的子類kNotificationForbidAdvPost,我導入此.h文件中。並有此通知的觀察員

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeToRecordingStatus) name:kNotificationForbidAdvPost object:nil]; 

我確定觀察者先被添加,然後發佈通知。

我在調試中看到[UINotification default]。它在兩部分代碼中具有相同的內存地址。

我有什麼錯誤嗎?

謝謝!

+0

愚蠢的問題,但是...你確定你已經註冊了通知嗎? – 2011-06-15 19:00:44

+0

我確定。在調試模式下,它顯示兩部分代碼在Thread1中運行。 – Solskjaer 2011-06-15 19:07:08

+0

你怎麼定義'kNotificationForbidAdvPost'?你有沒有得到任何編譯器警告? – 2011-06-15 19:08:27

回答

0

我嘗試添加arugument,但它仍然沒有奏效。

我創建一個新項目並使用無參數函數來響應通知,它工作正常。

我無法收到通知的原因是removeObserver方法在一個我沒有注意到的部分被調用。

感謝您的回覆。

3

該文檔是很清楚的,當它指出

通過 notificationSelector中指定的方法必須有一個和 只有一個參數( NSNotification的一個實例)。

http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html#//apple_ref/doc/uid/20000219-CHDCIGGB

所以,我看你的選擇要註冊爲changeToRecordingStatus時,它必須是changeToRecordingStatus:

- (void) changeToRecordingStatus: (NSNotification *) notification; 
+0

看起來像我們幾乎同時發佈相同的答案,你贏了幾秒雖然:) - 我會刪除我的帖子 – octy 2011-06-15 19:18:40

+0

是的,我錯過了,直到我只是寫一個方法,接受通知,回來檢查這個問題......確定你們在哪裏。 – 2011-06-15 21:19:28

相關問題