Cocos2d-x中的内存管理

cocos2d-x中内置了很多的容器类,每个容器类都是容纳CCObject的对象,在对象被添加到容器中时,他的引用就增加了一。

下面举一个例子说明:

CCArray中有addObject方法,负责把一个CCObject对象添加到这个容器中,在使用addObject添加进来的对象的引用都会加一。

void CCArray::addObject(CCObject* object)
{
    ccArrayAppendObjectWithResize(data, object);
}
/** Appends objects from plusArr to arr. Capacity of arr is increased if needed. */
void ccArrayAppendArrayWithResize(ccArray *arr, ccArray *plusArr)
{
    ccArrayEnsureExtraCapacity(arr, plusArr->num);
    ccArrayAppendArray(arr, plusArr);
}
/** Appends an object. Behavior undefined if array doesn't have enough capacity. */
void ccArrayAppendObject(ccArray *arr, CCObject* object)
{
    CCAssert(object != NULL, "Invalid parameter!");
    object->retain();
    arr->arr[arr->num] = object;
    arr->num++;
}

可以看到在CCObject的对象被添加到容器中的时候哦,retain()方法被调用,对象的引用增加了。

所以在之后,应该主动release掉这个引用。

posted @ 2013-07-08 14:55  walkabc  阅读(168)  评论(0编辑  收藏  举报