我Objective-C在我的iOS项目中有类,它在同一个类中实现Objective-C和C编码.我将扩展名改为.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".)