CSLoader内存泄露还是需要手动释放?

local csdPath = cc.FileUtils:getInstance():fullPathForFilename(“BGLayer.csb”)
bg = cc.CSLoader:createNode(csdPath)
scene:addChild(bg)
使用上面的CSLoader代码加载一个背景的Layer并且添加到主场景中。释放场景再重新加载时,每次内存都会多出2-3M。如果把创建背景那行代码替换成
bg = cc.Sprite:createWithSpriteFrameName(“BG.jpg”)
就不会出现这样的问题。

这个csb中只有一张背景图, texture资源也没有重复加载,为什么出现这样的问题?

这个问题没有人碰到过么。。。

csb需要的图片你释放了嘛。。。正常情况内存管理是正常的,我也是用的lua,也观察过内存

已解决。
原来是载入csb的时候CSLoader把sprite和控件都retain了,需要手动release,才能释放图片。觉得没有必要retain啊,既然是自动管理那就谁有需要自己retain,用个载入的接口还要看代码里有没有retain么。。。
另外那个removeTexture的也太坑了吧,release一下不管有没有被gl释放掉,都从列表里删除。那getCachedTextureInfo() dump出来的信息还有什么用呢。起码removeTexture的时候加个log提示一下没有完全释放吧。。。把场景释放以后,被CSLoader retain的node全成野指针了,texture从列表删除没释放,也没人管了。。。

也遇到这个问题了。。前几天还上论坛问来着。
自己也没时间去看源码,原来是retain了。。
那还要自己做方法去release,好蛋疼啊

我是把CSLoader里retain的地方都注释了,需要自己管理那个,retain load出来的根node就行了。刚用cocos半个月,一边做项目一边跳坑:6:

实际上如果load进来的node被addChild到场景中,应该是不需要额外的retain了吧,我记得好像addChild会自动retain的吧
注释掉倒是也可以,不过不知道引擎设计者在load里加retain是为了什么,注释掉会不会有别的问题
我也是研究cocos没多久

好恐怖,不带这么坑人的

rc2版已经改了,加载时候retain的地方都被注释掉了。
搜索// fix memory leak for v3.3

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。