2012-05-02 18 views
0

未使用および未初期化変数はどのように削除できますか?画面のサイズに応じて使用されるマスクやフィルタがありますが、必要がない場合は削除できますか?たとえば:未使用変数のAS3削除

var appMask:Shape; 
if ((screenR % 1) > 0) { 
    appMask = new Shape; 
    appMask.graphics.beginFill(0x000000); 
    appMask.graphics.drawRect(0,0,screenW,screenH); 
    appMask.graphics.endfill(); 
} else { 
    //delete appMask variable? 
} 

私も同様に変数の作成に新しい形を作り、後でゴミのクリーンアップにnullに設定すると考えられてきたが、私は予想通り、これは動作しますようにしたいです。

ありがとうございます!

答えて

3

短い回答、いいえ。

あなたが指定した例では、実際にオブジェクトをインスタンス化していないので、心配することはありません。変数は、作成されたスコープの存続期間中存続し、それから悪影響はなくなります。 メモリに大きなオーバーヘッドはなく、メモリが漏洩する可能性もありません。あなたがオブジェクトのインスタンスを実行する場合は

、あなたは、実際にそれを削除しないすることができます。自動ガベージコレクタができるだけ早くそれを取り上げるために、オブジェクトに関連付けられているすべてのイベントリスナを削除し、そのオブジェクトへのすべての参照を変更(null動作)し、次回の掃引時にそれを処理する必要があります。

+0

完璧な回答、ありがとうございます。私は主にオーバーヘッドについて心配していました。私はインスタンス化されていないままで残っているアプリケーションのマスキングとサイジングの周りを回る非常に少ないvarsを持っています。ありがとう! –

0

この場合、appMaskを削除するために何もする必要はありません。使用されておらず、アプリケーションのどこでも参照されていない場合、占有するメモリはガベージコレクタによって解放されます。 elseブロックで明示的にnullに設定する必要はありません。

一方、ローカル変数ではなくdeleteキーワードを使用して動的オブジェクトのメンバーを削除することができます。

関連する問題