12

NSArray 和 CCArray 有什么区别?此外,在什么情况下,在游戏编程方面,一种会比另一种更受欢迎?

4

3 回答 3

20

CCArray 模拟 NSMutableArray。它是一个 C 数组(内存缓冲区)的包装器。它是由 cocos2d 开发并在内部使用的,因为 NSMutableArray 被认为太慢了。然而,性能改进是微乎其微的。cocos2d 本身不使用的 CCArray 的任何用例(功能)仍然是潜在的问题来源,包括奇怪且难以调试的问题或糟糕的性能特征。

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

CCArray 是一个完美的例子,为什么人们不应该重新发明轮子,特别是当涉及到存储类时,已经有一个稳定的、经过验证的、快速的解决方案可用 (NSMutableArray)。它曾经拥有的任何速度优势早已不复存在。剩下的是您不想处理的运行时行为,包括一些极差的性能特征(插入、快速枚举)。

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

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

于 2013-04-10T07:59:00.497 回答
2

核实....

http://www.learn-cocos2d.com/2010/09/array-performance-comparison-carray-ccarray-nsarray-nsmutablearray/

希望这有助于
享受编程

于 2013-04-10T07:10:14.043 回答
1

CCArray http://www.cocos2d-x.org/embedded/cocos2d-x/d9/d2e/classcocos2d_1_1_c_c_array.html

在 cocos2d-x 中,CCArray 是可变的,即你可以给它添加元素。要创建没有容量的 CCArray 实例,可以使用 CCArray::array() 构造函数。CCMutableArray 是基于模板的容器,可以存储相同类型的对象。CCArray 将对象存储为 CCObject 实例,因此您必须在从 CCArray 实例获取对象后强制转换它们

NSArray 类包含许多专门设计用于简化在 Objective-C 程序中创建和操作数组的方法。

于 2013-04-10T07:47:24.497 回答