My worry is there are so many nuances in building a rich UI app - that even searching/finding samples online for specific things will make me want to have native/objectiveC elements into it - as opposed to trying to hack the sample in C#. I just want to copy and paste!
How does that native-C# binding happen? Is it user friendly? Is it your expectation that most folks out there will have this duality? (if not most of the UI code being native?)
I am literally sitting on a new idea that will be multi platform by nature and am wondering all these things as we speak here.
For third-party ObjC libraries, a lot of the more popular ones are already bound.
Writing your own C# bindings for ObjC isn't that difficult, but there is a learning curve involved. We're working on making improved tools to automate more of it, though. In the meantime, we've got a guy that is writing the bindings for libraries based on popular demand.
A lot of the bindings can be found here: https://github.com/mono/monotouch-bindings
The other thing I will say is that while there are 1:1 API mappings they have also went out of their way to make some common and rigorous tasks simpler. TableViewSource is one that comes to mind, simplifies the UITableView scenarios.
In my experience, copy-paste development is seldom a recipe for creating high-quality applications. So I do not think you should be worried about not being able to cut and paste code, you will be better off understanding what the code is doing and adapting your code (even if you do so in Objective-C).
As for how the C# binding happens, it is very simple.
Each Objective-C type exists with the same name in C#. You typically use intellisense to navigate the API.
For example, the Objective-C code: [foo addSubview:bar] becomes: foo.AddSubview (bar) in C#
The best thing to do is to follow our tutorials to get a taste for it.