【问题标题】:iOS: Unable to access instance methods inside a C-classiOS:无法访问 C 类中的实例方法
【发布时间】:2011-10-18 16:55:09
【问题描述】:

我认为我对 C 的理解不够好。

在我的代码中,添加了一个回调方法。

在方法内部,我希望能够调用一个存在于实例的方法。我试过[self methodName],但我被告知'self 是一个未声明的标识符'。

添加代码sn-ps

@implementation TheClass


static void audioRouteChangeListenerCallback (
                                       void                      *inUserData,
                                       AudioSessionPropertyID    inPropertyID,
                                       UInt32                    inPropertyValueSize,
                                       const void                *inPropertyValue) 
{

    .
    .
     //trying to call a instance method of TheClass here.
}

【问题讨论】:

  • 我的意思是 C。我在 Objective-C 类中编写了 C 代码。
  • 你回调的是静态函数吗?如果是,它不知道你的类。当你定义它时,你也许可以将你的类发送到回调。

标签: objective-c c ios callback


【解决方案1】:

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

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

【讨论】:

  • 您好,谢谢!我意识到我在设置属性监听器时确实传入了self。这是我第一次使用 C 类,很高兴能够让它工作!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2017-05-12
    • 2016-05-20
    • 1970-01-01
    • 2015-07-09
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多