1

我正在使用来自https://github.com/ServiceStack/ServiceStack/tree/master/release/latest/MonoTouch的服务堆栈的 MonoTouch 构建

在 iPad 上运行时,我收到JIT错误。我认为 MonoTouch 在构建中解决了这个问题?

Attempting to JIT compile method     
'ServiceStack.Text.Json.JsonReader`1<Common.AppCategoryEnum>:GetParseFn ()' while running 
with --aot-only.

我使用 DLLS:

  • ServiceStack.Common.dll
  • 服务栈接口.dll
  • ServiceStack.Text.dll

只有这个单一的电话:

new JsonServiceClient ().GetAsync<MyResponse> (url, Success, Failure);
4

2 回答 2

4

我正在使用来自的服务堆栈的 MonoTouch 构建

这些 .dll 已经超过 3 个月了,并且在一个月前发现并修复了一个类似的问题。

我收到 JIT 错误。我认为 MonoTouch 在构建中解决了这个问题?

是的。为 MonoTouch 构建时,使用了 AOT(提前)编译器。它编译它知道在运行时需要的所有内容。

然而,有时 AOT 编译器无法了解所有内容(例如通用虚拟方法)编译所有可能的变体(例如值类型)。请参阅文档网站中的通用限制部分。在这种情况下,AOT 编译器可能需要帮助(确保编译正确代码的签名,例如类似这样的东西)。

它也可能是一个错误——由于某种原因,所需的方法没有被 AOT 处理。当发现这一点时,在运行时会发生异常,因为缺少代码并且无法使用 JIT 来提供它。

于 2012-04-11T12:55:30.430 回答
1

我知道创建这个线程已经很长时间了,但是我在这里和那里找到了一种解决方法,只需在 FinishedLaunching 方法的 AppDelegate 中调用 var dummy = new JsonSerializer() 即可。

于 2013-02-22T16:09:31.273 回答