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

发布于 2024-10-28 11:31:47 字数 47 浏览 1 评论 0原文

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

Does an audio queue callback function have to be a C style function? Or can it be an objective C style method?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

踏月而来 2024-11-04 11:31:47

完全取决于API;如果 API 调用函数、块或方法,那么您必须使用它们。

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

void (*hollabackman)(AudioGunk*foo, void*context);

并且用于设置回调的 API 类似于:

setCallback(hollabackman func, void *context);

那么您可以:

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

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

那么:

void myCallbackFunc(AudioGunk *foo, void *context)
{
    MyClass *self = (MyClass *) context;
    [self hollaedBack: foo];
}

我建议您在设置回调时 retain self 并且仅当您拆除回调时,用 release 来平衡它。

Depends entirely on the API; if the API calls for a function, block or method, that is what you must use.

As long as the callback function type is something like:

void (*hollabackman)(AudioGunk*foo, void*context);

And the API for setting up the callback is something like:

setCallback(hollabackman func, void *context);

Then you can:

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

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

Then:

void myCallbackFunc(AudioGunk *foo, void *context)
{
    MyClass *self = (MyClass *) context;
    [self hollaedBack: foo];
}

I would suggest that you retain self when setting up the callback and only balance it with a release when you tear down the callback.

哎呦我呸! 2024-11-04 11:31:47

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

然而,您可以创建一些调用单个 ObjectiveC 对象方法的包装 C 函数。

CoreAudio (including AudioQueueServices) does not have an ObjectiveC interface - pure C is the answer for directly interfacing with CoreAudio.

You could however create some wrapping C-functions calling a singleton ObjectiveC object method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文