Objective c 背景层

Objective c 背景层,objective-c,cocos2d-iphone,Objective C,Cocos2d Iphone,我有一个游戏,我有多个场景,其中一些场景我使用了ray wenderlich网站上的拖放教程(即我的游戏商店)。我正在使用 [[CCDirector sharedDirector] replaceScene:[CCTransitionFadeTR transitionWithDuration:0.5 scene:[HelloWorldLayer scene]]]; 或者类似于场景之间的切换(游戏、商店、主菜单等),我注意到,当我切换场景时,它似乎只是将新层移动到另一层之上。这是我正在处理的一个

我有一个游戏,我有多个场景,其中一些场景我使用了ray wenderlich网站上的拖放教程(即我的游戏商店)。我正在使用

[[CCDirector sharedDirector] replaceScene:[CCTransitionFadeTR transitionWithDuration:0.5 scene:[HelloWorldLayer scene]]];
或者类似于场景之间的切换(游戏、商店、主菜单等),我注意到,当我切换场景时,它似乎只是将新层移动到另一层之上。这是我正在处理的一个大问题,因为如果你去商店场景(里面有拖放代码),然后回到主菜单(没有拖放),点击并拖动任何地方,它会使我的游戏崩溃。它崩溃了(我相信),因为它试图移动一个不存在的层。你知道怎么解决这个问题吗


我也尝试过使用[HelloWorldLayer node]而不是[HelloWorldLayer scene],没有任何区别。

检查您要离开的场景是否运行其dealloc方法。我的猜测是它在泄漏。场景中没有添加dealloc方法,我以为调用replaceSecene时cocos2d释放了场景中的所有内容?因此,我使用的手势识别器似乎由于某种原因从未被释放。我不能完全确定其原因。我尝试添加[手势识别器释放];我对这一层很满意,但没什么区别。我确实找到了一种绕过这个bug的方法(可能不是最正确的方法,但它是有效的),方法是将它添加到我的dealloc:gesturecognizer.enabled=NO;图层的解除锁定是否运行?如果不是,则整个层正在泄漏。是,层解除锁定运行。奇怪的是,我在另一个层/场景中使用了与手势识别器完全相同的代码,但我没有遇到任何问题。我添加了gestureRecognizer.enabled=NO;到图层,它就像一个符咒