2009-06-27 7 views
0

私は何回も呼ばれるクラスを持っています。アプリケーションが次の段階に進むと、これらはすべてアンロードする必要があります。そのため、私はクラスでunload()メソッドを作成しました。ActionScript/Flex 3で(符号なしの)整数を設定解除するにはどうすればよいですか?

問題は、私がuint変数 "charId"をnullに設定して、それを "unset"することができないということです。 "delete"コマンドは、ダイナミック変数やそのような方法でのみ適用可能であるため、実行できません。

私はこの変数をどのように設定しなくていいのでしょうか?それで、メモリは後で再割り当てされるでしょうか?

クラスのアンロード方法: - それはお勧めできませんが、警告を上げることは、変数の型を変更するよう

public function unload():void 
     { 
      trace("Unloading character with charname '" + charName + "'."); 
      enterButton.removeEventListener(MouseEvent.CLICK, enterClicked); 
      removeChild(enterButton); 
      enterButton = null; 
      charName = null; 
      charId = null; //this is possible but not recommended - what's a better way? 
      lobbyInterface = null; 
     } 

はそうそう、それが実際に可能です。だから、もっと良い方法は何ですか?

このオブジェクトも親オブジェクトでアンロードされることに注意してください。これらの変数はすべてメモリから解放されますか?

答えて

1

uint,int,NumberおよびBooleanは、AS3ではNULL可能ではありません。番号はNaNになる可能性がありますが、それは実際にあなたが得ることができる最高です。 intuintは常にちょうど32ビットなので、ヌルリファレンスを埋め込むことはできません。

AS3には密閉クラスの概念があるので、あなたがしようとしているクリーンアップのタイプは達成できません。密閉されたクラスは、メモリ内の固定サイズです。インスタンス変数に関しては、C structと考えると、そのすべてをダンプするだけで、何もダンプすることはできません。もちろん、C言語でも何でもできます。変数は変数ごとに1つの参照のエンティティで、メモリ内の固定ブロックです。

あなたがしたいことは、ダイナミック変数でのみ動作します。これは、別の方法で維持されます。

Flashには今日のほとんどのランタイムのようなガベージコレクションがあるので、この種のクリーンアップを行う必要はありません。また、ネストされた循環参照も扱います。唯一注意すべき点は、そのクラスへの "外部"参照を削除することだけです。一般的に収集されないものは、ディスプレイリスト上のオブジェクト、実行中のタイマーおよびインターバル、およびI/O関連のものです。そこからオブジェクトまでの参照チェーンがあるとすぐに、それは収集されません。

には、object Bを参照して、一部のオブジェクトのマウスを移動するイベントハンドラがあるとします。 Bは収集されませんが、オブジェクトにつながるチェーンがないとすぐに収集されます(遅かれ早かれ、GCはかなり怠惰ですが、使用するメモリが増えるほど作業が多くなります)。

+0

私はアプリをデバッグし、その時点でどのオブジェクトが参照されているかを確認する方法はありますか?このようにすれば、実際にガベージコレクションが行われるかどうかを確認できます。 – Tom

+0

@Tom - Profiler(ProバージョンのFlexで利用可能)がその情報を提供します。 500ドル。あなたが現金を持っている場合、それは完全に価値がある、IMO。 Profiler APIは公開されています。おそらく完全にあなた自身のビルドを実行することは不可能ですが、多分あなたは必要な機能のスライスを得ることができます。 http://livedocs.adobe.com/flex/3/html/help.html?content=profiler_3.html –

+0

@Tom - また、ASのガベージコレクションに関する記事を参照してください。そこには確かに他の記事がありますが、これは事実上の「読むべきもの」です。 http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html –

関連する問題