私は何回も呼ばれるクラスを持っています。アプリケーションが次の段階に進むと、これらはすべてアンロードする必要があります。そのため、私はクラスで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;
}
はそうそう、それが実際に可能です。だから、もっと良い方法は何ですか?
このオブジェクトも親オブジェクトでアンロードされることに注意してください。これらの変数はすべてメモリから解放されますか?
私はアプリをデバッグし、その時点でどのオブジェクトが参照されているかを確認する方法はありますか?このようにすれば、実際にガベージコレクションが行われるかどうかを確認できます。 – Tom
@Tom - Profiler(ProバージョンのFlexで利用可能)がその情報を提供します。 500ドル。あなたが現金を持っている場合、それは完全に価値がある、IMO。 Profiler APIは公開されています。おそらく完全にあなた自身のビルドを実行することは不可能ですが、多分あなたは必要な機能のスライスを得ることができます。 http://livedocs.adobe.com/flex/3/html/help.html?content=profiler_3.html –
@Tom - また、ASのガベージコレクションに関する記事を参照してください。そこには確かに他の記事がありますが、これは事実上の「読むべきもの」です。 http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html –