MonoTouch:使用 ServiceStack 导致 JIT 错误



我正在使用 https://github.com/ServiceStack/ServiceStack/tree/master/release/latest/MonoTouch 的Service Stack的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);

我正在使用来自Service Stack的MonoTouch构建

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

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

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

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

它也可能是错误 - 由于某种原因未对所需方法进行AOT。发现此问题后,在运行时将发生异常,因为缺少代码,并且无法使用 JIT 提供代码。

我知道

这个线程已经创建很长时间了,但我有点在这里和那里找到解决方法只需在 DoneLaunch 方法的 AppDelegate 中调用 var dummy = new JsonSerializer()。

最新更新