首页 > 解决方案 > iOS C# 解释 VS 代码生成

问题描述

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

标签: c#iosxamarin.iosinterpreteraot

解决方案


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

在 Xamarin.iOS 中称为btouch生成器采用这些定义文件并使用 .NET 工具将它们编译为临时程序集。但是,这个临时程序集不能用于调用 Objective-C 代码。然后生成器读取临时程序集并生成可在运行时使用的 C# 代码。

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

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

参考链接:iOS 应用架构介绍 Xamarin.iOS 解释器


推荐阅读