gpt4 book ai didi

objective-c - Obj-C,将对自身的引用传递给 C 函数

转载 作者:太空宇宙 更新时间:2023-11-04 00:05:56 24 4
gpt4 key购买 nike

在我的应用程序中,我有一些 C 代码执行一些低级别的工作,并且需要在特定事件发生时通知 Objective-C 实例。执行低级别工作的 C 函数将 void * 连同指向回调函数的指针一起带到上下文中。然后工作人员调用回调函数并将上下文也传递给它。

我想做的是将对“self”的引用传递给那个辅助函数,但到目前为止我还没有取得太大的成功。

我试过了哑投:(void *) self,桥接类型转换:(__bridge void *)self;/(__bridge_retain void*) selfCFBridgingRelease(self)

但所有这些都会导致我的应用程序崩溃。

如何将我的 self 转换为 void*?有没有更好的选择?

最佳答案

基本上是一个bridged cast没有所有权转移就足够了:

@implementation Foo

- (void)bar
{
void *ctx = (__bridge void *) self;

dosmthg(callback, ctx);
}

@end

static void
callback(void *ctx)
{
Foo *foo = (__bridge Foo *) ctx;

/* ... */
}

关于objective-c - Obj-C,将对自身的引用传递给 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24219375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com