我使用类似于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>
有什么想法吗?
答案 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打开错误报告,并附上一个允许我们复制问题的测试用例。