cocos2dx内存管理,只要记住几个准则就可以了:
1)当对象用new创建的时候,其引用为1,对象的生命周期和C++中的一样。
2)new之后调用autorelease后,对象的生命周期就是当前帧(在绘制下一帧的时候,就会被销毁掉)
3)用对象的create方法,其实就是new之后调用autorelease的整合,对象的生命周期也是一帧;4)如果想自己控制对象的生命周期,直接使用new,或者create方法后调用retain;
5)销毁对象用CCObject::release(void);
CCSprite* CCSprite::create(const char *pszFileName) 创建的Sprite已经调用autorelease().所以只是在当前帧显示。下一帧销毁。
当你把一个对象作为成员变量,又没有addChild().要使用retain()引用计数。
CCSprite* CCSprite::create(const char *pszFileName)
{
CCSprite *pobSprite = new CCSprite();
if (pobSprite && pobSprite->initWithFile(pszFileName))
{
pobSprite->autorelease();
return pobSprite;
}
CC_SAFE_DELETE(pobSprite);
return NULL;
}