iOS C#解释VS代码生成

时间:2020-05-20 15:11:38

标签: c# ios xamarin.ios interpreter aot

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

1 个答案:

答案 0 :(得分:1)

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

在Xamarin.iOS中称为btouch Generator (生成器)获取这些定义文件,并使用.NET工具来compile them into a temporary assembly。但是,此临时程序集不可用于调用Objective-C代码。然后,生成器读取临时程序集并生成可在运行时使用的C#代码。

为什么解释不是安全问题,而代码生成却是安全问题?

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

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