2011-02-05 147 views
0

有没有一种方法来编译Objective-C代码到C?我很有兴趣知道真的是代表的引擎盖下,但我在处理大会不舒服。编译目标-C代码到C

例如,我读了一本书,其中方法被表示为具有基于类和方法名称的唯一名称的函数,并且id类型被定义为具有单个成员(isa)的结构。有没有可能查看这个?

+0

但Objective-C代码*是* C代码,不是吗? – BoltClock 2011-02-05 17:43:16

回答

4

我在某处读到Objective-C曾经作为C的预处理器实现过,但事实并非如此。虽然运行时可以用C语言访问,但我不认为有一种方法可以用现代编译器从Objective-C代码生成C代码(尽管没有太难看的东西可能在技术上可行)。

但是,有一些过去的遗迹。如果你点击右键点击id并选择跳转到定义,你会看到typedef。如果你调试你的代码并查看一个对象的结构,你会发现它的第一个字段总是超类的结构,并且一直到isa。和苹果provides documentation on the runtime,可以给你一些事情如何工作的见解。

1

如果您没有进行优化编译,并找到合适的C反编译器,您可能会得到部分有用的结果。

Objective C语言中的几乎所有东西都可以用C代码表示,使用“隐藏”结构元素调用Objective C运行库。

(有谁知道,如果任何早期的宏观预处理器实现对旧版本的语言中依然存在并可用?)