Cocos2dx当node在析构的时候,它的children是怎么被释放的
今天看CCNode的代码,没有发现它的child是在什么时候被释放的。
假如在一个scene的某个layer里加入了几个sprite, 在addChild的时候有如下的代码,sprite的referenceCount加1
void Node::addChild(Node *child, int zOrder, int tag)
{
-- insertChild(child)
-- pushBack(child) // -> call CCVector.h的pushBack
-- _data.push_back( object );
-- object->retain() // ->referenceCount+1
}
然后当scene在出栈的时候, 应该会去析构自己,按我的理解在析构的时候应该会去递归的所有的children的referenceCount减1,接着释放所有的sprite,但从CCNode的析构函数,没有看到这个过程,只是把children的parent设置成NULL.
Node::~Node()
{
for (auto& child : _children)
{
child->_parent = nullptr;
}
}
感觉应该是在某个地方释放了,只是我没有看到,麻烦哪位解答一下哈。 谢谢了。