MonoTouch は Mono ランタイム実装のひとつであり,アダプタ層によって .NET 開発者にネイティブな iPhone GUI ツールキットの使用を可能にする。MonoTouch が Mono のエコシステムにおいてユニークなのは,それが Novell からの初の商用 Mono プロダクトであることだ。コミュニティからは予想通りの反発もあった。
MonoTouch の主要なコンポーネントは次のものだ。
- iPhone ネイティブ API (基本クラス, Quartz, CoreAnimation, CoreLocation, MapKit, Addressbook, AudioToolbox, AVFoundation, StoreKit, OpenGL/OpenAL) への C# バインディングである MonoTouch.dll。
- C# とその他の CIL 言語コードをコンパイルして,iPhone シミュレータまたは iPhone/iPod Touch デバイスで動作させるためのコマンドライン SDK。
- Mono ランタイム商用ライセンス(Mono ランタイムエンジンの作成したコードへの静的リンクを許可する)。
- GUIアプリケーションを作成するために Interface Builder に統合され,iPhone の開発を効率化する MonoDevelop アドイン。
MonoTouch に対する代表的な批判は,iPhone 開発に適した言語としては Objectiv-C がすでに存在する,というものだ。しかし Miguel de Icaza 氏は, C# には重要なアドバンテージがある,と主張している。
mtouch コマンドとバインディングが完成した時点で,私たちは Apple の iPhone サンプルを Objective-C から C# へ移植して API を試してみました。そのプロセスで2つのことを発見しました。ひとつは,C# 3.0 のコンストラクタイニシャライザが実に美しいものである,ということであり,
もうひとつは移植したサンプルのサイズが元の Objective-C プログラムの半分である,ということです。
さらに氏は,Objective-C のヘッダやコードファイルにある退屈なほど冗長な記述が,MonoTouch の XML と partial code-behind クラスの組み合わせによって解消される点についても指摘している。
MonoTouch がオープンソースでない点への批判もある。MonoTouch のシングルユーザライセンスは1年間のアップグレード込みでユーザあたり $399 から,エンタープライズエディションでは 1ユーザ $999 という高額になる。さらに Apple の iPhone SDK に強く結合されているため,プログラマによる開発では Mac の使用が必須である。