MonoTouch is a port of the Mono runtime along with an adapter layer so .NET developers can use the native iPhone GUI toolkit. MonoTouch is unique in the Mono ecosystem because it is the first commercial Mono product from Novell. As expected, there was some community backlash.
The major components included in MonoTouch are
- MonoTouch.dll The C# binding to the iPhone native APIs (the foundation classes, Quartz, CoreAnimation, CoreLocation, MapKit, Addressbook, AudioToolbox, AVFoundation, StoreKit and OpenGL/OpenAL).
- Command Line SDK to compile C# code and other CIL language code to run on the iPhone simulator or an iPhone/iPod Touch device.
- Commercial license of Mono's runtime (to allow static linking of Mono's runtime engine with your code).
- MonoDevelop Add-in that streamlines the iPhone development and integrates with Interface Builder to create GUI applications.
A common objection to MonoTouch is that Objective-C is already a suitable language for iPhone development. However, Miguel de Icaza is claiming that C# has some significant advantages.
With the mtouch command and the bindings complete, we started trying out the API by porting the Apple iPhone samples from Objective-C to C#. And in the process finding two things: C# 3.0 constructor initializers are a thing of beauty.
And also that the samples ported were half the size of the equivalent Objective-C programs.
Miguel continues to explain how MonoTouch’s XML+partial code-behind class eliminates the tedious repetition needed for Objective-C header and code files.
Another complaint is that MonoTouch isn’t open source. A single-user license with 1 year of updates starts at $399 per user, with the enterprise edition costing a hefty $999/user. Since this is tightly integrated with Apple's iPhone SDK, programmers must use a Mac for development.