MonoTouch 4.2

New Features in MonoTouch 4.2.2

This is a minor update to MonoTouch 4.2, with the following bug fixes:

Changes in MonoTouch 4.2.2

Bug fixes:

  • #587 - Full-AOT failure when not linking the application
  • #923 - UISegmentedControl: -[NSCFString BridgeSelector]: unrecognized selector sent to instance 0xe084860
  • #931 - UITapGestureRecognizer fails with "unrecognized selector sent"
  • #942 - Wrong binding for CGPDFArray.GetDictionary()
  • #975 - CGPDFDictionary.GetString() returns invalid strings
  • #980 - Cannot use ABPeoplePickerNavigationController after update to 4.2

New Features in MonoTouch 4.2

Debugging over USB: Device debugging is now done over the USB cable instead of Wi-Fi:

  • To debug over USB, you need MonoDevelop 2.6 installed
  • If you are using older MonoDevelop versions, it will continue to use WiFi

This solves the problems that users had with WiFi configurations between their Macs and their iOS devices and removes all the configuration components from the development process (no need to configure the debugger on the device if you happened to have a separate network)

Upgraded Mono Engine: By upgrading the Mono engine to version 2.10.5, we bring hundreds of minor optimizations and bug fixes.

iOS Proxy support: we now pick the system proxy settings and use those in .NET APIs. The new CFProxy type can be used to get to all the details.

Smaller Executables: Our improved linker reduces the size of the executables, this will depend on your executable, but on samples like MonoTouch.Dialog's sample this reduces the size in some 178k.

Smaller Downloads: a fine tuned packaging system has reduced the download size by 34% even while including the entire base class library source code to assist debugging.

Bundled Source Code for Base Class Libraries: Now we distribute the source code for the base class libraries on every package allowing developers to single-step into the Base Class Library source code.


  1. Upgraded Mono engine to 2.10.5
  2. Working generic variance and generic virtual methods

    Those CLR features are now supported on device.

    Note: The mobile profile still won’t feature the .NET 4.0 variance change as those might cause unwanted regressions.
  3. Smaller applications based on our improved linker, see this blog post for details.
  4. MonoTouch.MessageUI.MFMessageComposeViewController now has .NET-style events.
  5. Improved diagnostics in error conditions, such as:
    1. When managed objects are collected but the objective-c object are still alive
    2. When objective-c types are missing from the executable due to improper linking
  6. Reduced memory allocation for per-assembly AOT structures slightly
  7. Improves startup performance (we no longer probe the file system for assemblies that we ship with)
  8. Added AVMutableComposition
  9. New strongly typed UIGraphics.BeginPDFContext method.
  10. New MKCoordinate.FromMapRect API
  11. Improved mtouch diagnostic messages when deploying apps to the device

Bug Fixes:

Memory Retention/GC fixes:

  1. Fix UIControl retention problem when events were wired up
  2. Views are no longer retained if they were previously removed with RemoveFromSuperview ()
  3. UIGestureRecognizers can now remove targets
  4. The AOT compiler was incorrectly serializing some types and missing finalizer references.
  5. GC Fixes for long-lived objects.

Other fixes:

  1. Fixes for sqlite3.dylib when running in the simulator on newer sdk releases
  2. Simulator is once again activated when running the application, this wasbroken after the XCode 4.1 update (#202).
  3. Added a default SynchronizationContext for the main UI thread so that you can use the TPL to schedule tasks which update the UI (#690944)
  4. LLVM fix for assemblies with hyphens (‘-’) in their name.
  5. Fixes Application Output: Standard output and standard error are once again working.
  6. Works with the latest XCode beta release (xamarin bug #346)
  7. If you are using our XCode4 support with MonoDevelop 2.8, fixes on device deployment

Xamarin Workbook

If it's not already installed, install the Xamarin Workbooks app first. The workbook file should download automatically, but if it doesn't, just click to start the workbook download manually.