我有一个类可以生成一堆随机类型的对象并将它们(以及对它们的引用)存储在一个数组中。在执行此操作时,它还将对它们的引用存储在特定于其类型的数组中。
稍后,每个特定类型的数组都被迭代,其中的对象的 x 位置递减。在该循环中,如果它们在屏幕上,它们将被添加到另一个可见对象数组中。一旦它们离开屏幕,它们就会从该可见对象阵列中移除。
我的游戏规则是:对象只有在可见时才能被销毁。因此,当尝试销毁对象时,它会搜索可见对象数组并尝试定位该对象,如果找到则将其删除。
问题是,一旦从“可见数组”中删除了对象,“类型特定”数组将继续循环,所有这些对象的 x 位置都会递减——即使一个对象可能不再出现在屏幕上.
我想知道删除对对象的所有引用的最佳方法是什么?我犹豫要不要遍历所有数组并在它们上调用“removeObjectIdenticalTo”......我最初的解决方案是向我的对象“销毁”添加一个 BOOL 属性,如果它在屏幕上被销毁,则将其设置为 YES,并且然后让我的 x 递减循环跳过已被破坏的对象......但我开始想知道这是否不是内存管理的最佳方法,因为该对象的停留时间超过了它需要的时间......
应该如何处理?