Is there any documentation on the difference between the monotouch runtime used in (iPad) Simulator vs. running on an actual device?
I've recently had to change some code that resulted in ExecutionEngineException (seemingly unrelated to the one mentioned here) when running on the device, but not in the simulator开发者_StackOverflow.
Is JIT enabled in the simulator (I know it is not on the device) or why is there this difference?
(Question also posted to Monotouch forums here)
The iOS simulator is a simulator and not an emulator. This means that when running on the simulator you have access to a full x86 JIT, where as on the device you can only do ARM full-aot. There are a number of other subtle differences as well (certain frameworks / features are not available on the simulator).
One thing to remember about Simulator/iDevice is the configuration used. Double check the linking behavior. You can get subtle errors if you use Reflection and the linker removed a Get or Set method of a property you thought was there.
This hit me a few times.
精彩评论