1

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.

私はDLLを使用します:

  • ServiceStack.Common.dll
  • ServiceStack.Interface.dll
  • ServiceStack.Text.dll

そして、この単一の呼び出しのみ:

new JsonServiceClient ().GetAsync<MyResponse> (url, Success, Failure);
4

2 に答える 2

4

Service Stack の MonoTouch ビルドを使用しています。

これらの .dll は 3 か月以上前のもので、同様の問題が 1 か月前に発見され、修正されています。

JIT エラーが発生します。MonoTouchがビルドでそれを処理したと思いましたか?

はい。MonoTouch 用にビルドする場合、AOT (事前) コンパイラが使用されます。実行時に必要になるとわかっているすべてのものをコンパイルします。

ただし、AOT コンパイラがすべてを認識できない場合 (汎用仮想メソッドなど)、考えられるすべてのバリエーション (値の型など) をコンパイルできない場合があります。ドキュメンテーション Web サイトの「一般的な制限事項」セクションを参照してください。そのような場合、AOT コンパイラは助けを必要とするかもしれません (正しいコードがコンパイルされることを保証する署名、例えばthisのようなもの)。

また、何らかの理由で必要なメソッドが AOT されなかったバグである可能性もあります。これが発見されると、コードが欠落しており、JIT を使用して提供できないため、実行時に例外が発生します。

于 2012-04-11T12:55:30.430 に答える
1

このスレッドが作成されてから長い時間が経過していることは承知していますが、FinishedLaunching メソッドの AppDelegate で var dummy = new JsonSerializer() を呼び出すだけの回避策をあちこちで見つけました。

于 2013-02-22T16:09:31.273 に答える