可以用C函数调用objective-C类方法吗?

时间:2013-07-13 14:56:59

标签: ios objective-c

id  object_pointer;

(obj init method)...
   object_pointer = self;

void some-c-function( void )
{
   // Calling a class method from this C function:
   [Some_Obj_C_Class     class_method];

   // or to calling an object method:
   [object_pointer    object_method];
}

我必须在C函数中编写最高级代码,以便最终可以将部分移植到嵌入式系统中。我正在使用iPad来模拟尚未提供的硬件。

1 个答案:

答案 0 :(得分:1)

C函数当然可以调用Objective-C方法。实际上,C函数甚至可以 Objective-C方法。谈论如何工作进入Objective-C运行时,这是一个稍微相关的话题。没有参数的Objective-C方法可以被认为是具有两个参数的C函数:self_cmd。在编译时,除了任何方法参数之外,Objective-C方法调用被转换为对objc_msgSend函数之一的调用,该函数接受选择器和对象。

可能令人困惑的一件事是,因为self在大多数方法中都是一种隐藏的参数,所以即使你在@implementation中定义了它,它也无法从标准的C函数中访问。你的对象只要您使用可在函数范围内访问的Objective-C变量,就可以进行Objective-C方法调用。