我使用cocos2d的跑进了以下问题: 我第一次初始化一个场景我开始:的Cocos2D:场景之间切换时内存问题([EAGLView swapbuffers])
[[CCDirector sharedDirector] runWithScene: [MenuScene node]];
切换时场景之间,我总是用:
[[CCDirector sharedDirector] replaceScene:[SceneName node]];
这工作得很好,我能够从MenuScene切换到GameScene,然后到GameOverScene,然后回来,到MenuScene。但是当我再次切换到GameScene,然后再次切换到GameOverScene并尝试第二次切换到MenuScene时(第三次,如果您计算最初的runWithScene调用)应用程序崩溃,并且我收到错误消息:
*** -[EAGLView swapBuffers]: message sent to deallocated instance 0x9614f80
sharedlibrary apply-load-rules all
从我读过的内容来看,至少应该存在一个场景(这里应该是这种情况?)。我还试图通过对所有其他场景使用pushScene和最终使用popScene返回到MenuScene来保持原始场景不变,但是我也在第二次运行时以这种方式得到了同样的错误。
我的MenuScene的实现看起来如下:
@implementation MenuScene
@synthesize menuLayer = _menuLayer;
- (id)init {
if ((self = [super init])) {
self.menuLayer = [MenuLayer node];
[self addChild:_menuLayer];
}
return self;
}
- (void)dealloc {
[_menuLayer release];
_menuLayer = nil;
[super dealloc];
}
@end
我已经NSZombie启用,但我没有得到更多的信息。我敢肯定,我并没有释放这个观点,所以我想这与保留周期有关。我现在要研究一下。 – dschihejns
AppDelegate在应用程序崩溃之前未收到任何内存警告。 – dschihejns