objective-c - ios objC回调调用方法

标签 objective-c c callback

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

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

以及如何调用该方法,

谢谢!

最佳答案

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

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

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

<小时/>

回调通常是一个不属于任何实例的函数,因此不知道 self。

关于objective-c - ios objC回调调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14138255/

相关文章:

ios - 如何在objc中使用一个参数发出一个简单的http post请求

c - 应用程序内存优化

c++ - 如何获取 C/C++ 项目中的所有数据类型大小和函数堆栈占用空间大小?

c++ - COM 对象中的回调

javascript - 访问回调中的类属性

PHPUnit - 如何测试回调是否被调用?

ios - 我如何在核心数据中保存图像然后检索它?使用 swift

android - 在特定的时间间隔内无限期地在单独的线程中运行代码 iOS

php - 如何在每个线程的PHP扩展中封装全局变量?

ios - UITextView 光标/滚动移动问题