iOS:无法访问C类中的实例方法

时间:2011-10-18 16:55:10

标签: objective-c c ios callback

我不认为我已经足够了解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.
}

2 个答案:

答案 0 :(得分:4)

你不能在普通的C函数中使用self,它不属于任何Objective-C实例(这是函数和方法之间的区别)。

对于应该与Objective-C交互的回调,通常在设置回调时将指针传递给对象。在这种情况下,inUserData可能是您在注册回调时可以自行设置的。

答案 1 :(得分:0)

在您的问题中,您使用的语法不是C,而是Objective-C。你是否试图使用Objective-C?如果是这样,self是关键字,而不是标识符。编译器清楚地认为你的代码是C,而不是Objective-C。您的源文件是否具有.m文件扩展名?