3

Unity/Monotouch/C# で iOS 用 Facebook のチャットクライアントを作成しようとしています。次のエラーが表示されます

ExecutionEngineException: Attempting to JIT compile method '(wrapper managed-to-native) 
System.Threading.Interlocked:CompareExchange  
(System.EventHandler`1<Matrix.EventArgs>&,System.EventHandler`1<Matrix.EventArgs>,
System.Eve ntHandler`1<Matrix.EventArgs>)' while running with --aot-only.

  at Matrix.Net.BaseSocket.add_OnConnect (System.EventHandler`1 value) [0x00000]
in <filename unknown>:0 
  at Matrix.XmppStream..ctor (StreamType type) [0x00000] in <filename unknown>:0 
  at Matrix.Xmpp.Client.XmppClient..ctor () [0x00000] in <filename unknown>:0 
  at TestFacebook.setup () [0x00000] in <filename unknown>:0 
  at TestFacebook.Start () [0x00000] in <filename unknown>:0 

(Filename:  Line: -1)

XMPP フレームワークでデリゲートの 1 つに接続しようとすると。これはおそらくそれを引き起こすコードです:

xmppClient.OnBeforeSasl += this.xmppClient_OnBeforeSasl;

デリゲート メソッド:

public void xmppClient_OnBeforeSasl(object sender, Matrix.Xmpp.Sasl.SaslEventArgs e)
    { ... }

また、API の互換性レベルを上位の .NET 2.0 に変更しようとしましたが、結果はありませんでした。xmppClient_OnBeforeSasl メソッドを静的に設定しても役に立ちません。Unity では問題なく動作しますが、iOS デバイスで実行するとクラッシュします。

4

3 に答える 3

0

Matrix は iOS をサポートしていないことがわかりました :(

于 2012-08-28T12:49:37.163 に答える
0

Unity プロジェクトで使用する前に、agsXMPP ライブラリですべてのイベントの使用を削除する必要があります。私は agsXMPP をいくつか変更して使用しましたが、正しく機能しているようです。

パッチに関するいくつかの洞察を次に示します (あまり良い方法ではありません)。

ライブラリ プロジェクト内のすべてのイベント キーワードを検索して削除し (Event クラスはそのままにしておきます。これは別のことです)、( += ) を置き換えます。

xmppClient.OnBeforeSasl += this.xmppClient_OnBeforeSasl;

( = ) で

xmppClient.OnBeforeSasl = this.xmppClient_OnBeforeSasl;

OnBeforeSaslはイベントではなくデリゲートになり、複数のハンドラーを登録することはできません。

とにかく、それは一種の作業であり、addEventListener / removeEventListeners を追加していつでも拡張でき、デリゲートの配列を 1 つだけではなく使用できます。

私はそのようにやっていましたが、それはうまくいっているので、試してみてください!

于 2013-04-19T09:34:53.127 に答える