【发布时间】:2014-07-24 09:03:27
【问题描述】:
看了几篇博文,搜了一下SO,我知道怎么给类添加方法了,但是没有人提到怎么从String中定义方法体。
这是一个接近我想要做的示例博客文章:
http://theocacao.com/document.page/327
但是,SayHello 方法仍然需要在目标 C 代码中。理想情况下,我会有类似的东西:
IMP myMethod = class_addMethodFromString(@"method definition goes here...");
【问题讨论】:
-
有什么可能,但这不是很清楚。您可以添加一个 sn-p 来展示您希望能够在代码中编写的内容吗?
-
是的,请参阅编辑后的答案。
-
好吧,那是不可能的。或者至少可能不值得麻烦。实际上,您可以使用字符串作为输入调用编译器,然后动态加载结果。
-
Running arbitrary code at runtime 的可能副本,另请参阅 Eval in ObjC
-
我猜是通过
system()或NSTask和dlopen()调用编译器生成的文件。我从未尝试过。
标签: objective-c metaprogramming metaclass