0

我使用系统声音服务,用麦克风播放我有录音机的声音,工作正常,并在声音停止时使用回调,

//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,

以及如何调用该方法,

谢谢!

4

1 回答 1

1

self 是你的对象 .. 要在回调函数中知道它,它不是你的类的一部分,你将它作为 (void*) 以上下文参数的形式传递给函数。

现在回到您的对象并调用您从上下文变量中获取该指针的方法

在您的情况下,
上下文被命名为我自己: [(id)myself stopSoundByDemand];


一般来说,回调是一个不属于任何实例的函数,因此不知道自己。

于 2013-01-03T11:57:18.287 回答