本文由qinning199原创,转载请注明:http://www.cocos2dx.net/?p=161
介绍
CCArray 是cocos2dx中充分支持的类。它被用来优化游戏。你可以在cocos2d/Support中找到这个类。
它和苹果的NSMutableArr类相似,但是CCArray的表现力更好一些。
注意:CCArray和CCDictionary类被用来保存cocox2dx的类,然而他们并没有和STL一样强大。因此,没有必要使用CCArray或者CCDictionary来替代你的项目中的一些STL。
CCArray仅仅提供对象包装类的功能
CCArray继承自CCObject类(CCObject的主要目的是自动的回收内存),并且提供一系列接口。
注意点一:
CCArray中有一个remove方法和一个fastRemove方法,看一下源代码可知,remove是一个完全的移除操作,而faseRemove仅仅将当前元素release了,主要的区别点在于向前移动了这个元素之后的元素之后,没有显式的删除元素。代码如下:
unsigned int remaining = arr->num - index;
if(remaining>0)
{
memmove((void *)&arr->arr[index], (void *)&arr->arr[index+1], remaining * sizeof(CCObject*));
}
faseRemoveObject是快速的,但是它也意味着在CCArray中的对象将会改变位置,那么如果你使用CCArray的排序信息,你不应该使用faseRemoveObject方法。
注意点二:
CCArray初始它的引用计数为1,并且被设置为了autorelease。因此创建CCArray的时候你需要去retain,并且在析构函数中你需要手动的release内存。否则使用过程中可能CCArray已经释放造成错误。