我正在使用来自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:
只有这一个电话:
new JsonServiceClient ().GetAsync<MyResponse> (url, Success, Failure);
答案 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()。