1

SDK 4.0 を使用して、3.1.3 のデバイスにコンパイルする Titanium 1.2.1 を使用しています。このクラッシュは、シミュレーターには現れませんが、デバイスにのみ現れます。連絡先のリストをリストするtableViewがあります。連絡先の名前をクリックすると、新しい重いウィンドウが (別の実行コンテキストで) 開きます。新しいウィンドウには、連絡先の名前や写真などの詳細が表示され、サーバーに ajax リクエストを送信して他のすべての詳細を入力します。

contactTableView.addEventListener('クリック', function(evt) {
    var contactWin = Ti.UI.createWindow({
        url: "contacts_show.js",
        タイトル: evt.rowData.title,
        backgroundColor: colors.window_bg_color,
        バーの色: colors.topbar_bg_color
    });
    contactWin.contact = evt.rowData.contact;

    Ti.UI.currentTab.open(contactWin, { アニメート: true });
});

これは通常、連絡先の詳細と連絡先リストの間を数回行ったり来たりしない限り、デバイスで機能します。その後、クラッシュします。

クラッシュ ログは次のとおりです: http://gist.github.com/557988

クラッシュ ログから、行ったり来たりしていたときに、メモリを節約するために実行コンテキストを強制終了する必要があると判断されたようです。しかし、その時点で、イベント リスナーを削除しようとするとクラッシュするようです。イベントリスナーで何か変なことをしているとは思いません。この問題をデバッグする方法を知っている人はいますか? 前もって感謝します。

4

1 に答える 1

0

私はそれを考え出した。答えの短いバージョンは、複数回含まれていたファイル内にaddEventListenersを配置することでした。したがって、イベントリスナーを含む配列は、実行コンテキストが破棄されたときに破棄されたときに、繰り返されている間に変更されていました。したがって、SIGABORT。

addEventListener呼び出しを実行コンテキストのトップレベルウィンドウファイルに移動し、インクルードされたファイルには入れませんでした。

于 2010-09-02T09:06:44.963 に答える