I am currently learning Intel XDK but surprised why I have never given Xamarin a thought.
p.s. What about QT creator?
I am currently learning Intel XDK but surprised why I have never given Xamarin a thought.
p.s. What about QT creator?
The integration between the two using Xamarin Studio on the mac felt slightly clunky at times. Tweak UI, hook up event handlers, go back to Xamarin... watch it pull those changes across. If it failed, and it did at times, you could end up repeating changes.
Xamarin Studio is not Visual Studio. Better than Xcode, but it's not nearly the tool VS is.
Final app is a native experience nearly on par, performance-wise, with objective-c stuff. Most perf issues I hit also had more to do with working through iOS patterns & practices (e.g. long table views/lists with custom cells).
The cons are usually friction and requirements to understand more than a single tool/language. You will need to bring up multiple games at once.
There is a 1:1 mapping between iOS SDK and library access in the Xamarin API.
I also did the kata thing and made simple apps to deploy across platforms just because I could. That was fun.
I have produced apps for iOS and Android with it after having written many native apps for both, so the transition was very easy as you use the same API's. You just reuse a lot of non-UI code.
Note that I don't use visual tools for either platforms; not in Xamarin nor native; all UI is handcoded which, for me, has been proven to be a lot faster indeed. Reuse, refactoring and reasoning with UI code are easy that way while these visual aids don't really do anything beyond "Hello World".
QT Creator is nice but when I tried it 6 months ago it was not ready for prime time mobile wise and it is an abstraction over the gui/api meaning it is farther away from the API/device than you would sometimes want.
Intel XDK to me was a horrible experience, but after making so many HTML5 mobile / hybrid apps, I learned to hate the process. It's not ready; just forget about it for now. Make web stuff (responsive, web apps) in HTML5, make apps in something else.
I would suggest learning native (Java/Objective-C) first, getting some good experience with that in, then moving away from the visual tooling like storyboards etc (It's a matter of taste but > 100 apps later I would never use it again unless it improves a lot somehow... and I don't see that happening) and then maybe use something like Xamarin if you don't like the original native languages or want to reuse a lot of code. A more painful way of reuse which is used in games a lot is to write the common code in C++ and only the UI in the native tech. This is not a nice process at the moment IMHO esp as Android requires you to do that via the NDK and I have had issues with that.
It really is a phenomenal piece of engineering.
Biggest drawback, hard to find examples of things in C# so you have to be able to read documentation and code samples in ObjC or Java and mentally map them to C#.
I don't want to repeat the comments made by others, but one other other thing that impressed me was being able to compile c# code into a portable class library dll on windows, then just copy the binary to a macbook and link it into my iOS app project. Very cool code reuse.
Not knowing ObjC made getting started on iOS harder than it could have been because examples tend to be in ObjC - although Xamarin have some useful snippets and recipes on their site. Android was easy because of the similarity between Java and C#. You still need to learn the platform APIs, obviously.
Its been some time since I felt so positive about a new piece of developer-orientated technology. Definitely recommended.