[AS]removeChild()でガベージコレクション(GC)対象となる。
例えば、フレームアクションで、
var sp:Sprite = new Sprite(); this.addChild(sp); removeChild(sp); sp = null;
スプライトを作って、
メインのタイムラインに追加して、
メインのタイムラインから削除して、
スプライトの参照も削除
当然これで、spはGC対象となる。
でもこの場合ではsp=nullは特に要らないみたい。
var sp:Sprite = new Sprite(); this.addChild(sp); removeChild(sp);
この場合は、これでもspはGCの対象となるようす。
removeChild()した時点で、GC対象となっている。
removeChildについてのドキュメントより、
DisplayObjectContainer インスタンスの子リストから指定の child DisplayObject インスタンスを削除します。
削除された子の parent プロパティは null に設定されます。その子に対する参照が存在しない場合、そのオブジェクトはガベージコレクションによって収集されます。
参考サイト:
FlashPlayer9のガベージコレクタのメモリ解放の考察
DisplayObjectじゃない(addChildしてない)変数をGC対象とするときは○○=nullを使って参照を切ればいいってことなのかな。
Tweet