| My experience with MonoTouch has generally been very positive.
Why I love MonoTouch: - C# goodness, especially event handlers instead of overly verbose ObjC delegates - It's fun to port ObjC loops to oneliners using LINQ and lambdas - I prefer somewhat ugly MonoDevelop to pretty-but-very-odd Xcode - I can reuse both C# and ObjC code, and ObjC code is straightforward to port, if needed - Xamarin support is friendly and helpful There are some things that annoyed me: - Some generic-heavy C# code will crash the device due to AOT limitations—learned it the hard way - MonoDevelop hangs for a few seconds after you switch from Xcode, even if you didn't change anything - You need to make sure you _understand_ how MonoTouch GC works together with ObjC reference counting, or you'll get memory leaks - You'll need to learn to use Instruments to find those memory leaks - Debugger often freezes (should've reported this) - Binaries can get heavy, but not too heavy - Compilation is impossibly slow on Air, barely tolerable on Pro - Lack of tooling for binding ObjC code—I wish I could just drop ObjC files and headers into a MonoTouch binding project instead of compiling it to fat binary first But still, I'm glad we went with MonoTouch. |
How much time do you think a C# developer with several years of experience would need to put into learning the ins and outs of ObjC memory management before their code could be considered close to production level?