MonoTouch:使用ServiceStack导致JIT错误?

时间:2012-04-10 18:40:34

标签: c# xamarin.ios monodevelop jit servicestack

我正在使用来自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
  • ServiceStack.Interface.dll
  • ServiceStack.Text.dll

只有这一个电话:

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

2 个答案:

答案 0 :(得分:4)

  

我正在使用

的服务堆栈的MonoTouch版本

这些.dll已超过3个月,一个月前发现并修复了similar个问题。

  

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

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

然而,有时AOT编译器无法知道所有内容(例如通用虚拟方法)编译所有可能的变体(例如值类型)。请参阅文档网站中的generic limitations部分。在这种情况下,AOT编译器可能需要帮助(一个签名将确保编译正确的代码,例如this)。

它也可能是一个错误 - 由于某种原因,所需的方法不是AOT。发现这种情况时,在运行时会发生异常,因为代码丢失且JIT无法用于提供它。

答案 1 :(得分:1)

我知道这个帖子已经创建了很长时间,但我在某处找到了解决方法 只需在FinishedLaunching方法的AppDelegate中调用var dummy = new JsonSerializer()。