Xamarin.iOS: My Experience

I’ve recently had the opportunity to use Xamarin.iOS (formerly known as monotouch) to develop an iPad application. Let me start by saying, I’ve never written an iOS application before. I had previously seen some Objective-c, read about it and it’s beginnings, and knew that it was based on a MVC model.

I once owned an iPad 1 (as well as an iPhone for 2 short weeks before it broke) but it just wasn’t useful for me. Since those days, I’ve taken a long hiatus from Apple’s iOS products. They were severely under featured for my tastes and the Android ecosystem has most always been more appealing to me.

Then enters Xamarin.iOS, allowing me to write iOS applications with the beauty and elegance of C#.

The Good

Xamarin Studio is a nice IDE. It has intellisense and syntax highlighting on par with visual studio. It does some source analysis on par with code rush. It has everything you need to get things setup for iOS development, including a nice UI for Info.plist.

Email support has been off the charts. I’ve ran into several issues from quirkiness in Xamarin Studio (more on this in the bad section) to Xamarin Studio not wanting to show as being licensed. They were very quick to answer my questions and help me as much as possible. All three times they answered me within the hour.

The Xamarin Component Store has literally allowed me to add some awesome to my app. The HUDs being some of my most favorite components that add usefulness.

Evolve 2013 conference videos have been an excellent resource to learning all things Xamarin and iOS. I have a list of them downloaded that I still haven’t made it around to watching. I would watch them during my commute but I’m afraid I should be watching the road instead.

Finally, the help documentation and tutorials have been invaluable as well. They got me started doing all of the development. I walked through many of them for the first time before even beginning to develop anything in order to know what I should be doing exactly. They also helped me learn the iOS world and how the life cycle of many things works.

The Bad

Random freezes seem to happen to me about once a day. However, to be fair, the more recent update has reduced these.

Attempting to use Visual Studio and use a Mac as build server didn’t work in my first several tries. I attempted several different times across a week or so. To be fair however, I didn’t spend a ton of time on it, nor did I request support for it because I knew I wasn’t going to use it anyway.

Another issue I had that was SUPER annoying but I eventually figured out a fix was that breakpoints simply didn’t work when deploying to the iPad. I was able to fix this by creating a new solution and verify they worked there. Then, I changed the linker setting (although I’m not sure if it was specific to this) and they began working again. The catch here is I changed the setting, the breakpoints work, I changed it back, and they continued working. I’m not sure the difference here. I saw no actual changes.

The recent update changed the strictness of the C# compiler which caused my solution to unexplainably not compile, but generate errors. After emailing support, getting this answer, and the solution I was able to resolve the issue. For those that care, the solution was to take a couple of dlls I was referencing and compile them with MonoTouch.

Conclusion

Xamarin Studio is awesome and as you can see in my above comments, they’re making improvements. It’s been an awesome tool in learning a new ecosystem but not having to learn the language to get started. While learning this, I have learned quite a bit about Objective-c and can read it very well now. I’ll take that as another bonus.

As a fun side note, in my quest to learn more about Xamarin.iOS, and do the best I can, I shared this tweet. Apparently that made it onto this guy’s paper.li (make your own newspaper) site.

Daily Xamarin is out! http://t.co/ejQHTuxHMc ▸ Top stories today via @mikebluestein @carlowahlstedt @luiscubal
— Pablo Escribano (@PaulEcrivain) August 9, 2013

Tagged with: