Simply, Mono Touch is a set of tools that allow developers to create C# and .NET based application for iPhone and iPod Touch. It based on the Mono framework which is an open source implementation of .NET framework, it has been developed by Novell to enable a cross -platform version of .NET framework. The Mono Touch API provides the combination of the core .NET framework features and iPhone SDK. Of course Mono Touch dose not wrap all the features, there still something not supported yet. At the time of this post, the current Mono Touch version is 3.0.8 which supports .NET 3.5 and iOS 4.
As you know, Apple doesn’t allow any interpreted or run-time compiled program, that why you don’t see Java, Flash or pure .NET applications on iPhone. Mono Touch is .NET based frame work, so why the application build by Mono Touch can be run on iPhone? The magic here is Mono’s Ahead-of-Time(AOT) feature, it generates all native code that application could generate at run-time ahead-of-time, so the application deployed to iPhone is 100% native application.
Pros of Mono Touch:
- Developers can use their existing .NET experiences.
- Developers can take advantage of many .NET features like garbage collection, LINQ, web service, OpenTK…
- It includes a great interface builder tool.
- Mono is a cross platform, so it’s possible to port application build by Mono Touch to Android or Windows Phone 7.
- The productivity increases, because C# easier than objective-C.
Cons of Mono Touch:
- It requires a Mac.
- It’s too expensive. Mono Touch costs $1000 for one developer and $3999 for 5 developers with one year free update.
- The size of application is bigger than the same one build by objective-C because it needs to include the Mono framework.
- Apple banned Mono Touch on iOS 4, they have just lifted the ban a few days ago and we won’t know if they will ban it again later.
- Can not use things that it doesn’t support like XNA or Unity3D.
There are a lot about Mono Touch that i have not discovered yet. In general, it’s a cool framework for .NET developers to start making something on iPhone, the most popular smart phone that grow from zero to 80 million devices in only three years. But, in my opinion, i would like to start learning objective-C, because learning new thing is always good for you.