Flex コンポーネントの破棄 注意点
海賊王をめざす男 マツです。こんにちは。
使用されなくなったオブジェクトを破棄することによってメモリを解放するガベージコレクション。
使用していないオブジェクトがガベージコレクタによって必ず破棄されるには、子に対する親の参照など、使用していないオブジェクトに対するすべての参照を削除する必要があります。
親コンテナからコンポーネントを削除するには、removeChild() メソッドまたは removeChildAt() メソッドを使用します。
コンテナからすべての子コントロールを削除する場合は、removeAllChildren() メソッドも使用できます。
他のオブジェクトにその子への参照が保存されている場合、その子はメモリから削除されないので、
オブジェクトがガベージコレクションの対象となるようにするには、removeEventListener() メソッドを使用して、これらのオブジェクトのイベントリスナーも削除します。
ここで注意なのは、インラインで追加したイベントハンドラについて removeEventListener() メソッドを呼び出すことができません。
[Remove ButtonEvent]ボタンをクリックすると[A][B][C]ボタンのイベントを removeEventListener していますが、[A]ボタンはインラインでイベントを追加しているためにイベントが削除されません。確認するために removeChild は外しています。
削除対象となるオブジェクトイベントハンドラは、インラインで追加しないようにするといいですね。