我真的很感激有人能简单地解释一下我,实现 MonoTouch 之类的东西的一般方法是什么?我真的很惊讶,因为这不是我看到的第一个例子,人们获得像 Java 这样的平台并将其转换为 C/Objective-C 之类的东西。我真的无法想象垃圾收集器之类的东西是如何被翻译的。

提前致谢。

编辑:我了解将一种语言翻译成另一种语言的理论可能性。我的问题有点技术性:他们实施吗 ObjC 中的完整运行时 并捆绑它?(我对此表示怀疑......)或者他们只是将 C# 代码翻译成 ObjC/binary/etc?

有帮助吗?

解决方案

MonoTouch的使用名列前茅的时间编译生成一个单一的静态编译的文件 - 所以它没有实现iPhone上的.NET运行库。 MonoTouch的用途结合暴露在C#中的iPhone库。没有翻译到目标C

基本上,它给你在C#和其相关联的工具链工作,而暴露下面的iPhone OS的库调用的熟悉程度。

米格尔二伊卡萨这对播客#1,他是一个客人说明了一下。 链接

其他提示

MonoTouch的是不翻译。它只是在iPhone上运行,一些花哨的挂羊头卖狗肉的单声道运行时,使之与iPhone的限制不兼容。

在传统的单声道“运行时”不只是JIT,它也能处理GC,反射,I / O层,线程,异常等还有类库。为了让您的应用程序在iPhone上运行,这在很大程度上必须包含的应用程序。瘦身下来带来了一些挑战。此外,iPhone防止JIT运行时代码生成,只运行签名的代码,并且不允许动态库。

什么MonoTouch的确实是使用IL连接到您的代码使用到一个单一的二进制IL类库的只是部分组合。然后,它使用AOT编译预先生成所有的本地代码的JIT通常会从IL生成,然后与JIT少运行到可以签署一个本地二进制链接在一起这一点。最后,IL从管理二进制剥离。只留下元数据。

Monotouch 大概是 Mono 到 iPod 的端口。

Mono 本身是各种 *nix 环境中 .NET 运行时(和一些开发工具)的开源实现。

这是由 Miguel de Icaza 领导的一项大规模工作,他很早就意识到 .NET 的重要性,并开始将其移植到开放平台。顺便说一句,他得到了 Microsoft 本身的大力支持,因为 MONO 提供了本机 .NET 和 mono 之间的互操作性。

所以第一个答案是你需要成为一个组织良好、努力工作的天才。

第二个答案是更多的比较科学。“图灵完备”是系统被视为可编程计算机所需的最小功能集。它实际上是一个非常小的集合——减法、比较、分支、读取和存储。

从理论上讲,任何“图灵完备”系统都可以做任何其他“图灵完备”系统可以做的事情。因此,给定任何相当完整的编程语言环境,您应该能够使用另一个程序环境来模拟它。

周围有很多这样的例子。Jpython 在 Java JVM 中运行模拟 C python。我个人最喜欢的两个是 它可以在您的浏览器中运行原始的 zX Spectre 游戏Knuth MIX 组装机 两者都是纯javascript。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top