如何从C方法调用Objective-C"self"

or *_*ran 5 c objective-c ios

Objective-C在我的iOS项目中有类,它在同一个类中实现Objective-CC编码.我将扩展名改为.mm,这部分进展顺利.现在我想设置一个C方法来调用Objective-C同一个类中的方法.我得到的问题是当我尝试self从该C方法调用时.这是代码:

void SetNotificationListeners(){
    [self fireSpeechRecognition];
}
Run Code Online (Sandbox Code Playgroud)

错误是:

Use of undeclared identifier 'self'
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?

Mar*_*n R 12

您必须将实例指针传递给C函数:

void SetNotificationListeners(void *uData)
{
    MyClass *obj = (__bridge MyClass *)(uData);
    [obj fireSpeechRecognition];
}

- (void)myMethod
{
    // Call C function from Objective-C method:
    myFunction((__bridge void *)(self));
}
Run Code Online (Sandbox Code Playgroud)

(只有在使用ARC编译时才需要"brigde".)