iOS C# 解释 VS 代码生成

iOS C# Interpretation VS Code Generation

我读到无法在 iOS 上发出 IL 代码,因此表达式是使用 AOT 选项预编译的,并且无法解释无法 AOT 的 Expression。我的问题是为什么 iOS 允许解释但不允许运行时代码生成,除了性能之外它不一样吗?为什么解释不是安全问题而代码生成是?

Interpreter,顾名思义,允许您在 运行 时间解释应用程序的某些 C# 部分,同时像往常一样提前编译其余部分。

生成器,名为btouch in Xamarin.iOS, takes these definition files and uses .NET tools to compile them into a temporary assembly。但是,此临时程序集不可用于调用 Objective-C 代码。然后生成器读取临时程序集并生成可在 运行 时间使用的 C# 代码。

Why is that interpretation is not a security issue but the code generation is?

这就是为什么,例如,如果您将随机属性添加到您的定义 .cs 文件中,它不会显示在输出的代码中。生成器不知道它,因此 btouch 不知道在临时程序集中查找它以输出它。

参考链接:iOS App ArchitectureIntroducing the Xamarin.iOS Interpreter