2011-12-07 4 views
0

現在実行中の機能を持つオブジェクトの参照がすべて削除されたらどうなりますか?AS3 - コードを実行しているオブジェクトが削除されるとどうなりますか?

私のプログラムのメインクラスで配列に保持されたダイアログボックス型オブジェクトを持っていて、ダイアログを閉じる必要があるときに、そのクローズスクリーン関数の間に配列から削除します。私の質問は、ダイアログボックスオブジェクトがガベージコレクションの対象となる他のすべての方法であると仮定すると、実行されるはずのコードはどうなりますか?

説明のために編集: この配列は、プログラム内のビジュアル要素の1つで、ダイアログボックスは1つです。考え方は、ボックスを閉じる「OK」ボタン(または何でも)は、同時に表示されているオブジェクトの配列からもそれを削除するということです。

答えて

1

このオブジェクトの機能の実行中にオブジェクトへの参照がすべて削除された場合、残りの機能は実行され続けます。処理が完了すると、オブジェクトは次のガベージコレクションサイクル中に削除されます。

4

あなたのオブジェクトは、それを参照するものがある場合(ガベージコレクション内のメソッドを呼び出す場合)、ガベージコレクションの対象になりません。

あなたが自分自身の中から、ガベージコレクションのためのあなたのダイアログボックスが対象としたい場合、あなたはそれは内とすることができるアレイからの自己除去を扱う方法を追加する必要があります、など

ユアーズありこのように見える。

public function destroy():void 
{ 
    var ix:int = someArray.indexOf(this); 
    someArray.splice(ix, 1); 

    if(parent) 
     parent.removeChild(this); 

    // ...remove event listeners, etc 
} 
関連する問題