This isn’t meant to start a flame war. I’m an experienced C# developer (at work plus I wrote the About C,C++ and C# website from 2006-2013) and during those years I tried to learn Objective-C. I knew C, understood the Obj-C memory management (pre ARC), about retaining memory etc and understood the message passing with .
What I found hard though was seeing the big picture (View Controllers and Views) to structuring Apps as well as learn Obj-C at the same time. So I looked at it then worked my way through some open source games. One thing jumped out- the number of files needed was considerable, just like Java one per class only with Obj-C it was a .m and .h file per class!
Then there was Xcode 3 and Interface Builder. I’d grew up with Delphi and then C# so a GUI that let you hook up code to form objects was intuitive and in Obj-C it was somewhat painful jumping from Xcode to IB and then back.
You still get that with Xamarin if you create Apps with Nibs. So far I’ve done everything in code, walking down the nibless route. Xamarin have a new tool somewhere in alpha that generates C# code so fingers crossed, one of these days it’ll emerge blinking into the sunlight.
I’ve spent several years using Visual Studio: all versions from 2003, 2005, 2008, 2010 and 2012 so it’s a comfy home for me and to be able to step through an iPhone App in the VS debugger is very clever and executes faster than I expected. Between the iPhone and my PC is a network with a Mac Mini that proxies I guess the debug data between phone and PC.
But you don’t get it cheap- Visual Studio support in Xamarin is $999 and they expect you to pay that each year for support. You don’t have to of course but you won’t get the upgrades and with an new iOs version each year…
So out of the blue the offer of paid work to convert a Windows Phone App to iPhone with a down payment that bought Xamarin; that’s why I became a Xamarin developer.