1

我有最新的 Xamarin.iOS 测试版;尝试使用任何异步方法都会触发 JIT 异常。无论方法的内容如何,​​都会发生。

我正在运行它的控制器(主要是为了令牌异步方法而删除)

using System;
using System.Drawing;
using System.Net.Http;
using MonoTouch.Foundation;
using System.Collections.Generic;
using MonoTouch.UIKit;
using Archer.Base;



namespace Archer.Ios
{
  public class CategoryTableViewController : UITableViewController
    {
        public CategoryTableViewController () : base (UITableViewStyle.Grouped)
        {
        }
        String foo;

        public override void DidReceiveMemoryWarning ()
        {
            // Releases the view if it doesn't have a superview.
            base.DidReceiveMemoryWarning ();

            // Release any cached data, images, etc that aren't in use.
        }

        public override void ViewDidLoad ()
        {        
            base.ViewDidLoad ();
      //*snip*
        }

        public override void ViewDidAppear (bool animated)
        {
            LoadCategories ();
            base.ViewDidAppear (animated);
        }

        public async void LoadCategories ()
        {
            foo = await (new HttpClient ()).GetStringAsync
("http://ifconfig.me/all.json");
        }
    }
}

System.ExecutionEngineException:在使用 --aot-only 运行时尝试 JIT 编译方法“System.Runtime.CompilerServices.AsyncVoidMethodBuilder:Start (Archer.Ios.CategoryTableViewController/c__async0&)”。有关详细信息,请参阅http://docs.xamarin.com/ios/about/limitations

在 Archer.Ios.CategoryTableViewController.LoadCategories () [0x00000] 在:0 在 Archer.Ios.CategoryTableViewController.ViewDidLoad () [0x0009d] 在 /Users/apaulin/src/Archer/Archer.Ios/CategoryTableViewController.cs:43 在 at (wrapper managed-to-native) MonoTouch.ObjCRuntime.Messaging:void_objc_msgSend (intptr,intptr) at MonoTouch.UIKit.UIWindow.MakeKeyAndVisible () [0x00008] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIWindow.g .cs:129 在 Archer.Ios.AppDelegate.FinishedLaunching (MonoTouch.UIKit.UIApplication 应用程序,MonoTouch.Foundation.NSDictionary 选项)[0x00054] 在 /Users/apaulin/src/Archer/Archer.Ios/AppDelegate.cs:39 在在 MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr) 在 MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38 at Archer.Ios.Application.Main (System.String[] args) [0x00001] in /Users/apaulin/src/Archer/Archer.Ios/Main.cs:17

4

2 回答 2

1

已解决:代码中其他地方存在一个麻烦的通用方法,导致 JIT 问题。

于 2013-05-14T18:26:24.227 回答
0

尝试几种代码组合,看看是否能找到具体问题。

这是一个尝试的示例:

        public async Task<string> LoadCategories ()
        {
            var client = new HttpClient ();

            return await client.GetStringAsync("http://ifconfig.me/all.json");
        }

如果您的组合中的一个有效,我会向Xamarin 的 Bugzilla发布一个带有损坏示例的错误,然后也发布您的解决方法。这将帮助 Xamarin 修复它。

于 2013-05-14T12:05:10.500 回答