NSArray和CCArray有什么区别?另外,在什么情况下,对于游戏编程,哪一个会优先于另一个?
答案 0 :(得分:20)
CCArray模拟NSMutableArray。它是C数组(内存缓冲区)的包装器。它是由cocos2d开发并在内部使用的,因为NSMutableArray被认为太慢了。然而,性能提升很小。 cocos2d本身不使用的CCArray的任何用例(功能)仍然是潜在的问题来源,包括奇怪且难以调试的问题或可怕的性能特征。
最重要的性能关键方面是读取阵列顺序。在my latest tests这是CCArray(不再?)擅长的领域。特别是快速枚举:NSMutableArray快了大约33倍!
CCArray是一个完美的例子,为什么人们不应该重新发明轮子,特别是在存储类已经存在稳定,可靠且快速的解决方案时(NSMutableArray)。它曾经拥有的任何速度优势早已消失。剩下的是您不想处理的运行时行为,包括一些非常糟糕的性能特征(插入,快速枚举)。
长话短说:不要在自己的代码中使用CCArray!将CCArray视为不在用户代码中使用的内部私有类(除非在不可避免的情况下,即子数组)。
NSMutableArray是每个人都应该使用的数组引用实现,因为它经过了极好的测试,记录和稳定(在运行时行为和速度方面)。
答案 1 :(得分:2)
检查....
希望这有帮助 享受编程
答案 2 :(得分: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程序中数组创建和操作的方法。