Mono comes with a garbage collector that allows developers to focus on their software and let the runtime take care of the bookkeeping required to release objects. This avoids common memory leaks and reduces the amount of code that needs to be written to avoid these leaks.
The C# language in combination with the ECMA runtime prevent a whole class of errors from your application. With C# the common errors of reusing disposed objects accidentally, overflowing a buffer, casting an object into the wrong type (leading to corruption), releasing the memory twice or keeping dangling objects are a thing of the past.
The C# 3.0 language is a rich high-level language that brings many constructs that improve programmer productivity.
In addition to traditional object oriented languages, C# offers many interesting new constructs: type safe generic types, automatic state machines created with iterators, lambda functions and anonymous methods, built-in properties and built-in event systems as well as the System.Linq namespace that allows developers to create functional programming constructs.
The terse syntax allows configurations of objects in one pass:
var slider = new UISlider (new RectangleF (174f, 12f, 120f, 7f)){
BackgroundColor = UIColor.Clear,
MinValue = 0f,
MaxValue = 100f,
Continuous = true,
Value = 50f,
Tag = kViewTag
};
slider.ValueChanged += delegate {
Console.WriteLine ("New value {0}", slider.Value);
};
MonoTouch binds the Objective-C APIs that developers use on the iPhone into C# APIs that expose the functionality and map this to any ECMA CIL powered language. Objective-C delegates are exposed to C# applications in a number of ways giving developers complete control of how to consume and integrate with native APIs.
Both support for building iPhone and iPad applications is included.
MonoTouch provides a C#/ECMA binding for:
From the pure C#-based event model to the native Objective-C system, the two mechanisms are supported.
For example, to respond to events, programmers can just connect to the events they are interested in:
var page = new UIPageControl (new RectangleF (120f, 14f, 178f, 20f)){
BackgroundColor = UIColor.Gray,
Pages = 10,
Tag = kViewTag
};
page.TouchUpInside += delegate {
Console.WriteLine ("Current page: {0}", page.CurrentPage);
};
MonoTouch includes the .NET APIs that make sense in the iPhone device.
See our list of assemblies and the APIs they implement on the iPhone for the technical details.
The APIs that you are used to: System.IO, System.Xml, System.Web.Services, System.Threading, RegularExpressions and so on are all available under MonoTouch.
Additionally there is experimental support for WCF web services.
You can tap into the extensive universe of .NET libraries and APIs that exist out there for Mono and .NET and use them with MonoTouch.
Some of these libraries that developers are currently using are listed at http://wiki.monotouch.net/
MonoTouch allows you to access libraries created in the Objective-C language for the iPhone easily and to create C#/.NET bindings to Objective-C libraries.
This process is described in detail in our Binding Objective-C libraries.
MonoTouch is an SDK that can be used with your favorite editor, be it a full integrated development environment or a simple text editor.
The MonoDevelop integration helps developers get started by providing iPhone application templates that will get you from zero to your device in no time.
MonoDevelop's code completion helps you quickly explore the API as you write your application:

Our tutorial walks you through creating your first MonoTouch application, testing it on the simulator and then deploying it to your iPhone.
Both MonoDevelop and the MonoTouch SDK allow you to use Interface Builder to create and customize your UIs.
We take Inteface Builder one step further than XCode does by making MonoTouch automatically bind any outlets you define on your interface and any methods that you define in your interface to your C# code.
You will never have to manually bind any outlets from Interface Builder to your code as MonoTouch takes care of this.