我正在使用系统声音服务,播放声音我有麦克风录音机, 工作正常,并在声音停止时使用回调,
//callback pa saber termina
AudioServicesAddSystemSoundCompletion (soundID,NULL,NULL,completionCallback,(void*) self); //q es un call back?, q es (void*)self??
//Use audio services to play the sound
AudioServicesPlaySystemSound(soundID);
所以当声音停止时,它会调用:
//usando Callback!
static void completionCallback (SystemSoundID mySSID, void* myself) {
NSLog(@"termino");
}
但是如何调用我的方法:
- (void)stopSoundByDemand{
self.playingMode = NO;
[self.playButton setTitle:@"Play" forState:UIControlStateNormal];
[self stopSound];
}
所以,如果我理解正确的“回调”只适用于C?
我如何从这个C“回调”调用objC方法?
我已经读过它,但还没弄明白,
请我澄清回调是什么,如果仅适用于C,
以及如何调用该方法,
谢谢!
答案 0 :(得分:1)
self是你的对象..在回调函数中知道它,它不是你的类的一部分你把它作为一个(void *)传递给context参数形式的函数。
现在回到你的对象并调用你从上下文var
获取指针的方法 在您的情况下
上下文命名为我自己:
[(id)myself stopSoundByDemand];
回调通常是一个不属于任何实例的函数,因此不了解自我。