NSArray 和 CCArray 有什么区别?此外,在什么情况下,在游戏编程方面,一种会比另一种更受欢迎?
3 回答
CCArray 模拟 NSMutableArray。它是一个 C 数组(内存缓冲区)的包装器。它是由 cocos2d 开发并在内部使用的,因为 NSMutableArray 被认为太慢了。然而,性能改进是微乎其微的。cocos2d 本身不使用的 CCArray 的任何用例(功能)仍然是潜在的问题来源,包括奇怪且难以调试的问题或糟糕的性能特征。
最重要的性能关键方面是顺序读取数组。在我最近的测试中,这是 CCArray(不再是?)擅长的领域。特别是快速枚举:NSMutableArray 大约快 33 倍!
CCArray 是一个完美的例子,为什么人们不应该重新发明轮子,特别是当涉及到存储类时,已经有一个稳定的、经过验证的、快速的解决方案可用 (NSMutableArray)。它曾经拥有的任何速度优势早已不复存在。剩下的是您不想处理的运行时行为,包括一些极差的性能特征(插入、快速枚举)。
长话短说:不要在自己的代码中使用 CCArray!将 CCArray 视为一个内部的私有类,不要在用户代码中使用(除非不可避免,即子数组)。
NSMutableArray 是每个人都应该使用的数组参考实现,因为它经过了非常好的测试、记录和稳定(在运行时行为和速度方面)。
核实....
希望这有助于
享受编程
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 程序中创建和操作数组的方法。