【问题标题】:differences between NSArray and CCArrayNSArray 和 CCArray 的区别
【发布时间】:2013-04-10 06:59:38
【问题描述】:

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

【问题讨论】:

    标签: objective-c cocos2d-iphone nsarray


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:
      【解决方案3】:

      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 程序中创建和操作数组的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-23
        • 1970-01-01
        • 2016-02-18
        • 2012-10-01
        • 2010-12-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多