回调方法无法调用IBAction - iPhone

时间:2012-06-16 00:45:13

标签: objective-c ibaction

我有一个链接到IBAction的按钮,它会播放AudioServices的声音。 AudioServicePlaySystemSound

相关联
AudioServicesAddSystemSoundCompletion(silenceID, NULL, NULL, callbackFunction, (__bridge void*) self);

然而,在CallbackFunction内,我无法调用IBAction方法。事实上,我甚至无法使用保留的工作自我。我发现可能是因为C本身并不知道自己是什么。

感谢。

1 个答案:

答案 0 :(得分:2)

您无法在C函数中访问self之类的指针。这是因为该函数实际上不是该类的一部分。要在self上调用方法,您需要提供一些方法来从C函数访问指针self。

幸运的是,callbackFunction接受两个参数,第一个是声音id,第二个是你在AudioServicesAddSystemSoundCompletion函数中提供的数据。 (__bridge void*) self

void callbackFunction(SystemSoundID sound, void *data){
    //data is a pointer to self that you provide when you call AudioServicesAddSystemSoundCompletion
    [(MyClass*)data callMyIBAction];
}