cocos2d-xV2.2.2 发现addArmatureFileInfoAsync有内存泄漏的问题??

测试样例是
用addArmatureFileInfo同步加载一个动画
然后调用removeArmatureFileInfo释放这个动画
再用dumpCachedTextureInfo记录下这个动画的引用的纹理的引用计数(也就是加载动画的.ExportJson文件的config_file_path字段对应的纹理资源)

然后用addArmatureFileInfoAsync异步加载一个动画
以下同上
会发现动画的引用的纹理的引用计数是不同

调试发现原因是

异步加载时调用addDataAsyncCallBack的533行调用
CCArmatureDataManager::sharedArmatureDataManager()->addSpriteFrameFromFile的时候没有第三个参数(默认为"")
同步的话会填这第三个参数会填 上加载动画的.ExportJson文件路径

不填 的话会导致CCArmatureDataManager::removeArmatureFileInfo的第三个循环没有数据释放
这第三个循环是释放动画引用的精灵帧

您好,该问题我们已经收录,我们会尽快解决并第一时间在论坛发布解决方案,感谢您的反馈。

将addDataAsyncCallBack的533行调用
CCArmatureDataManager::sharedArmatureDataManager()->addSpriteFrameFromFile添加第三个参数为
pAsyncStruct->filename.c_str()
即这样调用
CCArmatureDataManager::sharedArmatureDataManager()->addSpriteFrameFromFile((pAsyncStruct->baseFilePath + configPath + “.plist”).c_str(), (pAsyncStruct->baseFilePath + configPath + “.png”).c_str(), pAsyncStruct->filename.c_str());
可以解决这个问题

谢谢分享~:2::2:

我们也已经提交过该问题了https://github.com/2youyouo2/cocos2d-x/commit/f87bdba9a5a5473df2602dedba66f526620716ed