Cocos2d-x版本:cocos2d-2.1rc0-x-2.1.3
windows平台。
VS版本:VS2010.
继上篇,在Cocos2d-x中,当一个节点调用addchild()方法后,其被加载的子节点会调用自身的retain()方法。从源码可以看出。
代码如图():
其中insertChild()方法代码如图:
函数ccArrayAppendObjectWithResize()代码:
函数ccArrayAppendObject()代码
由此看出,addChild()方法会调用加载子节点的retain()方法。
测试方法如上篇,测试代码如下:
// on "init" you need to initialize your instance
bool HelloWorld::init()
{
bool bRet = false;
do
{
//
// super init first
//
CC_BREAK_IF(! CCLayer::init());
/*省略了很多代码*/
CCSprite* fish = CCSprite::create();
CCLOG("retainCount after create: %d",fish->retainCount());
this->addChild(fish, 0);
CCLOG("retainCount after addChild: %d",fish->retainCount());
this->setTsprite(fish);
bRet = true;
} while (0);
return bRet;
}
void HelloWorld::menuCloseCallback(CCObject* pSender)
{
// "close" menu item clicked
//CCDirector::sharedDirector()->end();
CCLOG("retainCount after click button: %d",m_Tsprite->retainCount());
}
调试输出日志如图:
此处,计数总结结束。
备用,也希望能帮助到大家。