关于使用 replaceScene(scene)是否存在内存泄露的问题!
使用的版本:
cocos2d-x-2.2
cocos2d-x git 2013.11.4的代码仓
都发现了如果使用频繁切换场景调用
{
TransitionScene* createTransition(int nIndex, float t, Scene* s)
{
// fix bug #486, without setDepthTest(false), FlipX,Y will flickers
Director::getInstance()->setDepthTest(false);
//nIndex = 0;
switch(nIndex)
{
case 0: return CCTransitionProgressRadialCCW::create(t, s);
case 1: return CCTransitionProgressRadialCW::create(t, s);
case 2: return CCTransitionProgressHorizontal::create(t, s);
case 3: return CCTransitionProgressVertical::create(t, s);
case 4: return PageTransitionForward::create(t, s);
case 5: return PageTransitionBackward::create(t, s);
case 6: return FlipXLeftOver::create(t, s);
case 7: return FlipXRightOver::create(t, s);
case 8: return FlipYUpOver::create(t, s);
case 9: return FlipYDownOver::create(t, s);
}
}
}
{
s_nSceneIdx++;
s_nSceneIdx = s_nSceneIdx % MAX_LAYER;
auto s = new TransitionsScene();
auto layer = new Layer2();
s->addChild(layer);
auto scene = createTransition(s_nSceneIdx, TRANSITION_DURATION, s);
s->release();
layer->release();
if (scene)
{
Director::getInstance()->replaceScene(scene);
}
}
在安卓机器上长时间跑,物理内存,虚拟内存增长。
我在WIN测试,VLD库检测没显示内存泄露,在切换场景replaceScene log输出发现系统强制回收内存!
我判断是在运行时内存泄露!
如果需要,我可以上传我部分源代码