正在与该软件作者取得联系,暂时是个人看法,得到作者回复后再更新。
在项目中,处理动画用的是 animation packer 的工具,但是使用中发现,加载动画再释放动画之后,会造成内存泄露,百思不得其解。
怒跟代码之后发现如下地方:
CCDictionary *AnimatePacker::loadAnimations(const char *path )
{
......
CCAnimation *animation = CCAnimation::createWithSpriteFrames(spriteFramesArray, animate.delay);//CCAnimation::createWithSpriteFrames(spriteFramesArray,animate.delay);
CCAnimationCache::sharedAnimationCache()->addAnimation(animation,animate.name.c_str());
spriteFramesArray->removeAllObjects();
......
return ret;
}
这是loadAnimation的地方,注意CCAnimationCache里面的key。
void AnimatePacker::freeAnimations(const char *path)
{
......
set<string> animateNames=pathToNameMap[path];
for (set<string>::iterator strItr=animateNames.begin();strItr!=animateNa