iPhone硬件上的Monotouch / WCF错误

时间:2012-05-07 09:22:56

标签: wcf xamarin.ios

我使用类似于http://docs.xamarin.com/ios/tutorials/Working_with_Web_Services#Consuming_WCF_Services的Silverlight SLSvcUtil.exe工具在Monotouch上创建了一个WCF客户端。

在模拟器上一切正常但是当我在iPhone 4S上启动它时出现错误:

在使用--aot-only运行时尝试JIT编译方法'(包装器委托 - 开始 - 调用):begin_invoke_IAsyncResult_ __ TimeSpan_AsyncCallback_object(System.TimeSpan,System.AsyncCallback,object)'。 / p>

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我从monotouch调用了一些wcf服务而没有遇到任何类似的问题 - 所以可以这样做。

monotouch中的jit错误通常表示链接器已删除某些内容,或者已调用某些虚拟抽象方法(至少在我最近的经验中)。

您可以检查真实iPhone项目的链接器设置吗?如果将其设置为-nolink,问题是否会消失 - 请参阅http://docs.xamarin.com/ios/advanced_topics/linker

如果这确实有帮助,那么下一步是在wcf生成的文件中查看 - 在这种情况下你能找到并发布一些关于回调方法的代码吗?

答案 1 :(得分:0)

这些问题很少与链接器相关,如果签名是包装器,则更少。但是,您可以使用Stuart的说明轻松确认。

IMO您可能会遇到AOT编译器无法预测所需代码的情况。混合泛型和值类型时会出现这种情况(并且生成的签名中有 TimeSpan )。这将适用于模拟器(使用JIT的地方),但不适用于AOT应用程序。

解决此类问题的最佳方法是在http://bugzilla.xamarin.com打开错误报告,并附上一个允许我们复制问题的测试用例。