我不认为我已经足够了解C.
在我的代码中,添加了一个回调方法。
在方法中,我希望能够调用一个生成实例的方法。我试过[self methodName]
,但我被告知'self是一个未声明的标识符。
添加了代码段:
@implementation TheClass
static void audioRouteChangeListenerCallback (
void *inUserData,
AudioSessionPropertyID inPropertyID,
UInt32 inPropertyValueSize,
const void *inPropertyValue)
{
.
.
//trying to call a instance method of TheClass here.
}
答案 0 :(得分:4)
你不能在普通的C函数中使用self
,它不属于任何Objective-C实例(这是函数和方法之间的区别)。
对于应该与Objective-C交互的回调,通常在设置回调时将指针传递给对象。在这种情况下,inUserData
可能是您在注册回调时可以自行设置的。
答案 1 :(得分:0)
在您的问题中,您使用的语法不是C,而是Objective-C。你是否试图使用Objective-C?如果是这样,self是关键字,而不是标识符。编译器清楚地认为你的代码是C,而不是Objective-C。您的源文件是否具有.m文件扩展名?