我看了一下,iOS上是不能发出IL代码的,因此表达式是用AOT选项预编译的,而 Expression
的,不能被AOT的都是解释。我的问题是,为什么iOS允许解释而不允许运行时代码生成,除了性能之外,不是一样的吗。为什么解释不是安全问题,而代码生成却是安全问题?
该 口译员顾名思义,它允许你在运行时解释你的应用程序的一些C#部分,同时像往常一样提前编译其余部分。
该 发电机称为 抚摸 在Xamarin.iOS中,采用这些定义文件,并使用.NET工具来实现。编入临时汇编. 然而,这个临时程序集不能用来调用Objective-C代码。然后,生成器读取临时汇编,生成可以在运行时使用的C#代码。
为什么说解释不是安全问题,但代码生成是安全问题呢?
这就是为什么,例如,如果你在你的定义.cs文件中添加了一个随机属性,它不会出现在输出的代码中。生成器不知道它,因此 btouch
不知道在临时装配中寻找它来输出。
参考链接 。iOS应用架构 ,Xamarin.iOS 解释器介绍