EVAL在Objective-C [复制](eval in Objective-C [duplica

2019-06-23 15:49发布

可能重复:
有什么样Matlab的eval语句在Objective-C 2.0吗?

是否有一个eval函数(如口齿不清,JavaScript的,Python和Ruby ...)在Objective-C?

我的意思EVAL是,可以在任意的Objective-C代码(可能有类定义,副作用,instrospection等)作为字符串(不是块或NSInvocation的或IMP或类似的东西),并评估功能每个表达式,尊重当前的运行时环境的状态,副作用,类定义,等

如果没有,是否有可能现有的运行的范围内实施?

Answer 1:

无论是语言还是苹果的框架直接支持这样的事情。 然而,目标之一LLVM是成为一个可嵌入的编译器套件。 我敢肯定它可以生成可执行代码的权利到内存中。 困难的部分将提供代码访问调用代码的预先存在的环境。 例如,编译代码,它引用局部变量或类似的东西。

(请注意,这种做法是被禁止的iOS应用商店,但它可能也许是可行的Mac OS X上)



Answer 2:

绝对不。 Objective-C的是一个完全编译的语言。 只有解释型语言可以做那种事。



Answer 3:

编号代码EVAL是动​​态语言的功能。 虽然客观-C具有动态特征,甚至可可运行时,它仍然被视为一个静态的语言(通常情况下)。



文章来源: eval in Objective-C [duplicate]