c# - iOS C# 解释 VS 代码生成
问题描述
我读到不可能在 iOS 上发出 IL 代码,因此表达式是使用 AOT 选项预编译的,并且Expression
无法 AOTed 的 s 会被解释。我的问题是为什么 iOS 允许解释而不是运行时代码生成,除了性能之外是不是一样的。为什么解释不是安全问题,但代码生成是?
解决方案
顾名思义,解释器允许您在运行时解释应用程序的某些 C# 部分,同时像往常一样提前编译其余部分。
在 Xamarin.iOS 中称为btouch的生成器采用这些定义文件并使用 .NET 工具将它们编译为临时程序集。但是,这个临时程序集不能用于调用 Objective-C 代码。然后生成器读取临时程序集并生成可在运行时使用的 C# 代码。
为什么解释不是安全问题,但代码生成是?
这就是为什么,例如,如果您在定义 .cs 文件中添加随机属性,它不会出现在输出代码中。生成器不知道它,因此btouch
不知道在临时程序集中寻找它来输出它。
参考链接:iOS 应用架构, 介绍 Xamarin.iOS 解释器
推荐阅读
- flutter - 使用切换按钮时显示微调器
- azure-devops - 在 azure 管道变量中设置任务结果
- python - 通过用户模型 Django 访问配置文件信息
- math - 检查一个数字是否可以表示为 x 的 2 次方之和?
- tensorflow - 如何从 Huggingface TensorFlow 后端的检查点加载经过训练的 TensorFlow 模型?
- javascript - visual-studio-code 中的自动右括号不适用于 js 和 jsx 文件
- html - React Native Web 与 Electron 抛出错误
- python - 关于从用户获取文件名的输出问题
- maven - 快照 uniqueVersion 是否有可以在 gradle/maven 中访问的变量集?
- javascript - Jquery中的InfoWindow shouldFocus不起作用