From what I understand, Apple has banned the Flash runtime on the iPhone because Apple doesn't want an alternative runtime environment to that which Apple provides via their own tools. Allowing a Flash runtime, according to Apple, would allow developers to circumvent application update policies and other controls which Apple has put in place. And at this time, Adobe has not chosen to build tools to statically compile apps created in Flash.
My further understanding is that .NET apps created via MonoTouch are statically precompiled and hit the iPhone as native code vs. running inside the .NET common language runtime (CLR), which Apple would surely disallow. Since .NET code is not executing in Microsoft's runtime but rather natively on the iPhone CPU, Apple isn't complaining.
My questions are:
Am I correct about why Apple allows .NET-developed applications on the iPhone?
Is one vendor's precompiled, native code on the iPhone (or any platform I suppose) distinguishable from any other? In other words, is native code that's produced by MonoTouch indistinguishable from native code produced by compiled Objective C code? Is the source of the native code totally opaque?