2012-08-29 66 views
2

我有一个类可以产生一堆随机类型的对象,并将它们(对它们的引用)存储在一个数组中。在这样做的时候,它还将引用存储在特定于其类型的数组中。处理删除多个数组中的对象的最佳方法是什么?

后来,每个类型特定的数组都被迭代,并且它们中的对象的x位置递减。在该循环中,如果它们在屏幕上,它们将被添加到另一个可见对象数组中。一旦它们离开屏幕,它们将从可见对象数组中移除。

我的游戏规则是:一个物体只有在可见时才能被销毁。所以当试图销毁一个对象时,它会搜索可见的对象数组并尝试定位该对象,如果发现它将被删除。

问题是,一旦对象从“可见数组”中移除,“特定类型”数组继续循环,所有这些对象的x位置递减 - 即使对象可能没有在屏幕上更长。

我想知道什么是最好的方法来删除所有对象的引用是?我很犹豫要通过所有的数组并对其调用“removeObjectIdenticalTo”......我最初的解决方案是将BOOL属性添加到我的对象“销毁”中,并将其设置为YES,如果它在屏幕上被销毁,然后让我的x递减循环跳过已经被销毁的对象....但是我开始想知道,从内存管理的角度来看,这是不是最好的方法,因为这个对象的粘附时间比它需要的要长......

应该怎么处理?

+1

也许它会帮助,如果你添加一些代码显示你想要做什么? –

回答

0

如果您是通过将所有对象存储在字典中开始的,这可能会有效。随后,添加包含的NSString相同的,它生活在数组中的辞典键的属性的对象(被传来传去)

然后,所有你必须做的是:

NSMutable *array = [dicionary objectForKey:object.dictionaryKeyString]; 
//then remove the object from *array 
0

我还在犹豫要经过所有的阵列,并呼吁“removeObjectIdenticalTo”他们

为什么?是否因为你认为这是低效的?你怎么知道的?

但是,为了真正的效率,并假定对象是所有不同的对象,请使用NSSet而不是NSArray。访问特定的对象是有效的。

相关问题