2011-06-15 142 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

相关问题