非常に頻繁に作成/破棄され、同時に多くのリストに存在する可能性のあるオブジェクトがいくつかあります。それらへの参照が残っていないことを確認するために、オブジェクトにはフラグ isDestroyed があり、これが設定されている場合、各リストはリストからオブジェクトを削除する責任があります。
ただし、これはもちろん、メモリ リークの原因となります。リストの 1 つからオブジェクトを削除するのを忘れた場合はどうなりますか? プログラムが正しく動作することを視覚的に監視するために、ファイナライズをオーバーライドし、グローバル変数を増やして破壊を追跡します (正式なテストではなく、アイデアを得るためだけです)。ただし、GC を制御できないため、理論上は何かが破壊されるまで永遠に待つことができます。
したがって、問題は 2 つあります。オブジェクトが複数のリストにある場合、「isDestroyed」はオブジェクトの有効期間を制御する良い方法と見なされますか? そのオブジェクトを使用するすべての人が、そのオブジェクトをリストから削除するように注意する必要がありますが、これは悪いことのように思えます。
また、オブジェクトの参照カウントがいつゼロになるか、つまりいつ破棄がスケジュールされているかを確認する良い方法はありますか?
編集:より具体的に言うと、私の場合、オブジェクトは部屋の物理的なエンティティを表します。また、各オブジェクトを描画するマネージャー クラスが 1 つあるため、1 つのリストに含まれています。別のリストには、クリック可能なすべてのオブジェクトが含まれているため、別のリストがあります。この場合、すべてのオブジェクトを 1 つのリストに入れ、ポリモーフィズムまたはインスタンスを使用することはできません。オブジェクトが「破棄」されると、表示されたりクリック可能になったりしてはならないため、両方のリストから削除したいと考えています。