Xamarin.iOS 对内存管理有什么作用?使用通常的 IL,我们有垃圾收集器,它负责处理未使用的对象并让程序员免于调用 delete。当 Xamarin 将代码编译为本机时,这是如何工作的?谁清理不再使用的物品?
这个问题回答了编译的工作原理,但没有解释内存管理部分:MonoTouch 如何工作?
Xamarin.iOS 对内存管理有什么作用?使用通常的 IL,我们有垃圾收集器,它负责处理未使用的对象并让程序员免于调用 delete。当 Xamarin 将代码编译为本机时,这是如何工作的?谁清理不再使用的物品?
这个问题回答了编译的工作原理,但没有解释内存管理部分:MonoTouch 如何工作?
您寻求的答案是在您链接的问题上给出的。
总而言之,IL 到本机的翻译过程是提前完成的,但 Mono 运行时的其他部分仍然是必需的。JIT 编译只是运行时执行的任务之一,这个特定的部分与 iOS 的内存限制不兼容(可写内存页也不能执行,这是 JIT 运行所必需的)。这是,AFAIK,完全需要提前(AOT)编译的唯一原因。
Mono 垃圾收集器确实在 iOS 上运行,它只是嵌入到 Monotouch 编译器生成的二进制文件中。生成的二进制文件包含您的 AOT 编译的应用程序代码以及您使用的库的 AOT 编译版本,以及 Mono 运行时的精简版本。