7

我想在运行时从文件创建一个 Objective C 类。因此,例如,我有一个目标 c 应用程序,然后我想将它指向一个文本文件(或一个 .h .m 对,无论什么都可以),然后让应用程序解析文本文件并在运行时创建类(Class no目的)。当然,我会编写解析器和所有我想知道的东西是否可能。我读了这两篇文章:

http://www.mikeash.com/pyblog/friday-qa-2010-11-6-creating-classes-at-runtime-in-objective-c.html

http://www.mikeash.com/pyblog/friday-qa-2010-11-19-creating-classes-at-runtime-for-fun-and-profit.html

它显示了如何在运行时创建一个目标 C 类,但它是使用在编译时定义的 C 函数来完成的。如果我能找到一种方法来使用字符串来定义完美的函数,因为这样我就不必在编译时定义它们了。

4

3 回答 3

2

这就是所谓的反射式编程。我猜 Obj-C 没有代码评估支持,因为它不是一种脚本语言,所以 Obj-C 的反射概念是非常有限的。另外,在运行时,编译器已经将代码翻译成 Obj-C clang 代码,仅仅反向翻译字节码并重新编译它是一项非常耗时的工作

对于 Obj-C 反射,您可以参考这些答案

于 2012-12-24T10:11:12.333 回答
1

当然。完全有可能。

我建议从Objective-C 支持开始,因为它包括一个完整的 Objective-C 解析器和代码生成器。

于 2012-10-12T16:16:47.530 回答
1

看看我的 github 项目 cocoa-interprreter 它做了你想要的一部分。

它需要一个文本文件并在运行时编译它.. 然后使用 NSTask 运行生成的可执行文件。更改它很容易,因此使用 NSBundle 将二进制文件加载到自己的进程中

https://github.com/Daij-Djan/cocoa-interpreter

于 2013-01-05T17:42:03.480 回答