- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
NSArray 和 CCArray 有什么区别?另外,在什么情况下,在游戏编程方面一个人会比另一个人更受欢迎?
最佳答案
CCArray 模拟 NSMutableArray。它是 C 数组(内存缓冲区)的包装器。它是由 cocos2d 开发并在内部使用的,因为 NSMutableArray 被认为太慢了。但是,性能改进很小。 cocos2d 本身不使用的任何 CCArray 用例(功能)仍然是潜在的问题来源,包括奇怪且难以调试的问题或糟糕的性能特征。
最重要的性能关键方面是顺序读取数组。在 my latest tests这是 CCArray(不再?)擅长的领域。特别是快速枚举:NSMutableArray 快了大约 33 倍!
CCArray 是一个很好的例子,为什么人们不应该重新发明轮子,特别是当涉及到存储类时,已经有一个稳定、经过验证和快速的解决方案可用 (NSMutableArray)。它曾经拥有的任何速度优势早已不复存在。剩下的是您不想处理的运行时行为,包括一些极其糟糕的性能特征(插入、快速枚举)。
长话短说:不要在您自己的代码中使用 CCArray!将 CCArray 视为内部私有(private)类,不要在用户代码中使用(除非不可避免,例如子数组)。 p>
NSMutableArray 是每个人都应该使用的数组引用实现,因为它经过了非常好的测试、记录和稳定(无论是在运行时行为还是速度方面)。
关于objective-c - NSArray 和 CCArray 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15919045/
目前看来我需要维护两个数组。一个用于我的对象“客户”的 Sprite 数组,一个用于实际客户对象的数组。 我对客户 Sprite (CCSprite) 使用 CCArray 没问题。 但是我似乎无法将
我正在为我的游戏制作一个粒子系统,它基本上是我的游戏中从火箭中冒出的烟雾。所有粒子都位于称为“烟雾”的 ccArray 中。 ccArray *smoke = ccArrayNew(0); 我有一个名
对 C++ 和 Cocos2d-x 非常陌生,但我只是在玩弄 CCArray 并有一个问题。我习惯了 NSMutableArray 和 NSArray,在创建数组时我不必设置数组的大小。 对于 CCA
我知道您可以只对非 CCObject 对象使用 std::vector 或什至普通数组,否则使用 CCArray。但是,如果我有一个类是 CCObject 的包装器怎么办?我可以将它存储在 std::
我的 cocos2d-X 应用程序中有以下代码未编译 SEL_CallFuncO func1 =callfunc_selector(BPBasketLayer::addSingleNumberB
我希望从 CCArray 中调用一个随机的 CCPoint,然后从数组中删除该点,这样它就不会被再次调用。这是我使用的代码: myArray->addObject(pos1); 其中 pos1
在使用了几年的 Objective-C 之后,我才刚刚开始学习 C++ 和 Cocos2d-x。今晚的障碍似乎是学习如何将 CCArray 函数用作类范围变量。 HelloWorldScene.h c
我是 c++ 和 cocos2d-x 的新手,我有一个问题。我有一个“弹丸”它是 CCSprite,好的,我将它插入到数组中: projectile->setTag(2); _projectiles-
NSArray 和 CCArray 有什么区别?另外,在什么情况下,在游戏编程方面一个人会比另一个人更受欢迎? 最佳答案 CCArray 模拟 NSMutableArray。它是 C 数组(内存缓冲区
在使用 cocos2d-X 寻找真正的随机性时,不需要过多的条件;感兴趣的算法利用 2 个 CCArray(s) 在两个不同的对象池上分配和组合函数。 我们为对象“leather”和“leatherS
最近遇到一个问题。我在 cocos2d-x 中大量使用了 vector STL。在我的一节课上,我写道: vector strokedrawList; StrokeDrawnode 继承自CCNode
cocos2d::CCArray *arr; cocos2d::CCSprite *foo; arr->addObject(foo); CCObject *item; CCARRAY_FOREAC
我是一名优秀的程序员,十分优秀!