Build Cross-Platform Apps in C# using Parse and Xamarin
blog.parse.com
blog.parse.com
I'm looking at the website and as a daily C# developer, this looks enticing. But I'm wondering what the limitations are as it seems somewhat too-good-to-be-true.
They've changed licensing models fairly recently; you can deploy to the app store for free with a limit on app size (complexity). They also have a 30-day money-back guarantee -- seem to be really reaching out for mind share.
Obviously the important question is if it's worth the time to learn the abstraction layer!
Edit: I'm sure they'll be swinging by once they are not so busy; check out the livestream of the conference going on right now: http://blog.xamarin.com/live-streaming-xamarin-evolve-2013/
It's not perfect though:
- On Android, there's a limit to how many Java Native Interface objects you can have (40000 I believe). This sets a hard limit to how many object you can have that wrap Java objects, so for instance you can't have 40000 UI objects at the same time. It's possible to run into this problem, but you can work around it by working in Java for those parts.
- On iOS there are ways in which the Mono GC can free objects that are referenced by the native objects, but not by the C# code. For instance, you could pass a lambda to be called when a button gets clicked. This lambda (or something it references) gets freed, and when the button is clicked it tries to call C# code that's gone. This causes some really nasty bugs, and should IMO be considered a bug as it really breaks the expectations one has when coding in a managed language.
Also coming from native iOS, debugging seems really clunky to me. It's very easy to reach a state where the IDE just goes "welp, I have no idea what's in scope right now".
When I saw & tried Xamarin, I had the exact thing I was trying to do in Titanium done within an hour, and that includes learning the SDK.
Highly, highly recommended. Also, when searching for help, be sure to search for MonoTouch as well as Xamarin. Finally, check out their IRC channel - some very helpful people there.