MonoTouch 是 Mono 运行时的一个移植版本,附带了一个适配器层,以便.NET 开发人员能够使用原生的 iPhone GUI 工具包。MonoTouch 在 Mono 的世界中是独一无二的,因为它是 Novell 发布的第一个商业 Mono 产品。如大家预料的一样,引起了社区的强烈反应。
包含在 MonoTouch 中的主要组件是:
- MonoTouch.dll,访问 iPhone 原生 API 的 C#互操作程序集(基础类、Quartz、CoreAnimation、CoreLocation、MapKit、Addressbook、AudioToolbox、AVFoundation、StoreKit 和 OpenGL/OpenAL)。
- 命令行 SDK,用来编译 C#代码和其他 CIL 语言代码,让它们可运行于 iPhone 模拟器或 iPhone/iPod Touch 设备中。
- Mono 运行时的商业许可(让你的代码可以使用 Mono 运行时的静态连接引擎)。
- MonoDevelop 插件,让 iPhone 开发更加简单,并集成了 Interface Builder 以方便创建 GUI 应用程序。
对 MonoTouch 一个常见的异议,就是大家认为 Objective-C 已经是 iPhone 开发最适合的语言。然而,Miguel de Icaza 宣称,C#具有一些重要的优势。
随着 mtouch 命令和互操作功能的完成,我们开始尝试把 Apple iPhone 例子由 Objective-C 移植为 C#。在这个过程中,我们发现两件事情:C# 3.0 的构造器的初始化器是个非常棒的功能。
并且,这些被移植后的例子只有同样的 Objective-C 程序的一半体积。
Miguel 接着解释到,MonoTouch 的 XML+ 分部代码隐藏类的方式如何消除 Objective-C 头文件和代码文件所需的那种冗长繁复。
大家的另外一个不满就是, MonoTouch 不是开源的。新购买的单用户许可每年每人需要支付 399 美元,而企业版则需要支付夸张的 999 美元 / 每用户。由于和 Apple 的 iPhone SDK 紧密的集成在一起,程序员还是必须使用 Mac 来进行开发。
评论