Iphone 音频队列回调函数必须是C风格的函数吗?或者它可以是一个客观的C风格的方法?

Iphone 音频队列回调函数必须是C风格的函数吗?或者它可以是一个客观的C风格的方法?,iphone,objective-c,c,core-audio,audioqueueservices,Iphone,Objective C,C,Core Audio,Audioqueueservices,音频队列回调函数必须是C风格的函数吗?或者它是一种客观的C风格的方法吗?完全取决于API;如果API调用函数、块或方法,则必须使用该函数、块或方法 只要回调函数类型类似于: void (*hollabackman)(AudioGunk*foo, void*context); setCallback(hollabackman func, void *context); 设置回调的API类似于: void (*hollabackman)(AudioGunk*foo, void*context);

音频队列回调函数必须是C风格的函数吗?或者它是一种客观的C风格的方法吗?

完全取决于API;如果API调用函数、块或方法,则必须使用该函数、块或方法

只要回调函数类型类似于:

void (*hollabackman)(AudioGunk*foo, void*context);
setCallback(hollabackman func, void *context);
设置回调的API类似于:

void (*hollabackman)(AudioGunk*foo, void*context);
setCallback(hollabackman func, void *context);
然后你可以:

- myMethod
{
    setCallback(&myCallbackFunc, (void *)self);
}

- (void) hollaedBack: (AudioGunk*) aGunk
{
.....
}
然后:

我建议您在设置回调时保留self,在拆除回调时只使用释放来平衡它。

CoreAudio(包括AudioQueueServices)没有ObjectiveC接口-纯C是直接与CoreAudio接口的答案

但是,您可以创建一些包装C函数来调用singleton ObjectiveC对象方法