私は、ランダムな型のオブジェクトの束を生成し、それら (まあ、それらへの参照) を配列に格納するクラスを持っています。これを行っているとき、それらへの参照もそれらの型に固有の配列に格納します。
その後、型固有の各配列が反復処理され、それらのオブジェクトの x 位置が減分されます。そのループ内で、それらが画面上にある場合、それらは可視オブジェクトのさらに別の配列に追加されます。それらが画面から消えると、その可視オブジェクト配列から削除されます。
私のゲームのルールは次のとおりです。オブジェクトは、表示されている場合にのみ破壊できます。そのため、オブジェクトを破棄しようとすると、可視オブジェクト配列が検索され、オブジェクトが見つかった場合は削除されます。
問題は、オブジェクトが「可視配列」から削除されると、「型固有の」配列がループオーバーされ続け、それらすべてのオブジェクトの x 位置がデクリメントされることです。たとえオブジェクトが画面に表示されなくなっても、 .
オブジェクトへのすべての参照を削除する最良の方法は何ですか? 私はすべての配列を調べて「removeObjectIdenticalTo」を呼び出すのをためらっていました...私の最初の解決策は、「破壊された」オブジェクトにBOOLプロパティを追加し、画面上で破壊された場合はそれをYESに設定することでした。次に、破棄されたオブジェクトをスキップする x デクリメント ループを作成します....しかし、そのオブジェクトが必要以上に長く固執しているため、メモリ管理に関する限り、それが最善のアプローチではないのではないかと考え始めました...
これにどのように対処する必要がありますか?