我正在使用 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()。