在阅读了几篇博客文章并通过SO搜索后,我知道如何向类中添加方法,但没有人触及如何从String定义方法体。
这是一个示例博客文章,它接近我想要做的事情:
http://theocacao.com/document.page/327
但是,SayHello方法仍然需要在目标C代码中。理想情况下,我会有类似的东西:
IMP myMethod = class_addMethodFromString(@"method definition goes here...");
答案 0 :(得分:1)
我不相信这是可能的。目标C需要编译,所以除非你能编译你从该字符串中得到的代码,否则我认为不可能。 setImplementation
方法允许您指向现有的已编译代码块。
如果您真的想要,并且如果您运行的代码由您决定,您可以在UIWebView中执行以字符串格式接收的javascript(不必添加到视图中,您只需要一个例子,我相信。)
您还可能故意在代码中导致缓冲区溢出,然后以这种方式执行任意命令,但同样,您将在已编译的环境中运行,并且需要知道您希望的代码的内存地址执行。