0

我有一个链接到 IBAction 的按钮,它用AudioServices. 这AudioServicePlaySystemSound

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

不过,在里面CallbackFunction我不能调用 IBAction 方法。事实上,我什至不能使用保留的工作自我。我发现这可能是因为 C 本身不知道 self 是什么。

谢谢。

4

1 回答 1

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];
}
于 2012-06-16T01:01:29.330 回答