Iphone 是否从本机c函数内部引发事件?

Iphone 是否从本机c函数内部引发事件?,iphone,cocoa,cocoa-touch,Iphone,Cocoa,Cocoa Touch,我正在开发一个应用程序,在播放系统声音后对本机c函数进行回调。我想在发生这种情况时引发一个事件,以便我视图中的订户可以处理它 -(void) completionCallback(SystemSoundID mySSID, void* myself) { [[NSNotificationCenter defaultCenter] postNotificationName:@"SoundFinished" object: myself]; } 我收到发送到实例的无法识别的选择器… 在视图中

我正在开发一个应用程序,在播放系统声音后对本机c函数进行回调。我想在发生这种情况时引发一个事件,以便我视图中的订户可以处理它

-(void) completionCallback(SystemSoundID mySSID, void* myself) {
   [[NSNotificationCenter defaultCenter] postNotificationName:@"SoundFinished" object: myself];
}
我收到发送到实例的
无法识别的选择器…

在视图中,我有以下代码:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(soundStopped) name:@"SoundFinished" object:nil];

我对objective-c非常陌生,我错在哪里

更新确切错误为:

    2011-04-18 19:27:37.922 AppName[5646:307] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[BackgroundTestViewController soundStopped]: unrecognized selector sent to instance 0x13b4b0'

问题出在您的通知处理程序中(您已注册了一个不由观察者处理的选择器)。演示如何添加观察者。从“普通C”函数发送通知没有问题。

问题出在通知处理程序中(您已注册了一个不由观察者处理的选择器)。演示如何添加观察者。从“普通C”函数发送通知没有问题。

-soundStopped和
-soundStopped:
是两个不同的方法名称。冒号是方法名称的一部分,但在调用
-addObserver:selector:name:

-soundStopped
-soundStopped:
时忽略了冒号是两个不同的方法名称。冒号是方法名称的一部分,但是您在调用
-addObserver:selector:name:

时忽略了冒号。第二个错误的原因是宏扩展到[[[NSNotificationCenter]defaultCenter]]请注意@Chris所说的:您的
center
宏表示一个对象,因此
[[center]post…]
是无效语法,就像
[[obj]方法…]
是无效语法一样。在
completionCallback()
中,将
[[center]post…]
更改为
[center post…]
@Chris谢谢--我删除了这个问题,因为它不是我试图解决的真正问题。第二个错误的原因是宏扩展为[[NSNotificationCenter]defaultCenter]]请注意@Chris所说的:您的
center
宏表示一个对象,因此
[[center]post…]
是无效语法,就像
[[obj]方法…]
是无效语法一样。在
completionCallback()
中,将
[[center]post…]
更改为
[center post…]
@Chris谢谢--我删除了这个问题,因为它不是我试图解决的真正问题。正如我所想的,您在addObserver中的选择器名称错误-请参阅Caleb的答案以获得修复。正如我所想的,addObserver中的选择器名称错误-请参阅Caleb的答案以了解修复方法。
    2011-04-18 19:27:37.922 AppName[5646:307] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[BackgroundTestViewController soundStopped]: unrecognized selector sent to instance 0x13b4b0'