在模拟器和设备上运行 monotouch 有啥区别?

Posted

技术标签:

【中文标题】在模拟器和设备上运行 monotouch 有啥区别?【英文标题】:What differences are there between running monotouch in simulator vs. on device?在模拟器和设备上运行 monotouch 有什么区别? 【发布时间】:2011-06-11 08:43:28 【问题描述】:

是否有任何文档说明在 (iPad) 模拟器中使用的单点触控运行时与在实际设备上运行之间的区别?

我最近不得不更改一些在设备上运行时导致 ExecutionEngineException(似乎与提到的here 无关)的代码,但在模拟器中却没有。

模拟器中是否启用了 JIT(我知道它不在设备上)或者为什么会有这种差异?

(问题也发布到 Monotouch 论坛here)

【问题讨论】:

【参考方案1】:

ios 模拟器是模拟器而不是模拟器。这意味着在模拟器上运行时,您可以访问完整的 x86 JIT,而在设备上您只能执行 ARM full-aot。还有许多其他细微差别(某些框架/功能在模拟器上不可用)。

【讨论】:

感谢您的回答,杰夫。将等待,看看是否有人可以指出我的任何官方文档,否则我会接受你的回答。 但我认为模拟器是 Xcode 附带的,因此会运行“Apple 二进制文件”?那么它怎么会知道 JIT 或 AOT 呢? Markus,Apple 的文档在这里:developer.apple.com/library/ios/#documentation/Xcode/Conceptual/… 它没有特别指出 x86 与 ARM 的变化,但它们肯定也存在。 Krumelur,模拟器和设备的二进制文件完全不同。 Markus,Geoff Norton 是 MonoTouch developmentmet 背后的人之一,所以我猜他的回答不仅仅是官方的 :)【参考方案2】:

关于 Simulator/iDevice 要记住的一点是所使用的配置。仔细检查链接行为。如果您使用反射并且链接器删除了您认为存在的属性的 Get 或 Set 方法,您可能会遇到细微的错误。

这打击了我几次。

【讨论】:

以上是关于在模拟器和设备上运行 monotouch 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

有啥方法可以区分在 iPhone 模拟器和实时设备上运行的代码吗? [复制]

无法确定 Xamarin Forms 应用程序是在模拟器中还是在设备上运行

485和232的电平信号有啥区别?

使用 Monotouch 和 iOS 从服务中提取数据 (JSON) 的理想方式?

在 monotouch/monodroid 中使用 mocks 进行单元测试

KVM、QEMU和KQemu有啥区别?