NSArray和CCArray之间的差异

oop*_*ogy 12 objective-c cocos2d-iphone nsarray

NSArray和CCArray有什么区别?另外,在什么情况下,对于游戏编程,一个人会更喜欢另一个?

Lea*_*s2D 20

CCArray模拟NSMutableArray.它是C数组(内存缓冲区)的包装器.它是由cocos2d开发并在内部使用的,因为NSMutableArray被认为太慢了.然而,性能提升很小.cocos2d本身不使用的CCArray的任何用例(功能)仍然是潜在的问题来源,包括奇怪且难以调试的问题或可怕的性能特征.

最重要的性能关键方面是读取阵列顺序.在我最近的测试中,这是CCArray(不再是?)擅长的领域.特别是快速枚举:NSMutableArray快了大约33倍!

CCArray是一个完美的例子,为什么不应该重新发明轮子,特别是在存储类已经存在稳定,可靠且快速的解决方案时(NSMutableArray).它曾经拥有的任何速度优势早已消失.剩下的是您不想处理的运行时行为,包括一些非常糟糕的性能特征(插入,快速枚举).

长话短说:不要在自己的代码中使用CCArray!将CCArray视为不在用户代码中使用的内部私有类(除非在不可避免的情况下,即子数组).

NSMutableArray是每个人都应该使用的数组引用实现,因为它经过了极好的测试,记录和稳定(在运行时行为和速度方面).