我有一个链接到IBAction的按钮,它会播放AudioServices
的声音。 AudioServicePlaySystemSound
与
AudioServicesAddSystemSoundCompletion(silenceID, NULL, NULL, callbackFunction, (__bridge void*) self);
然而,在CallbackFunction
内,我无法调用IBAction方法。事实上,我甚至无法使用保留的工作自我。我发现可能是因为C本身并不知道自己是什么。
感谢。
答案 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];
}