Я использую cocos2d и столкнулся со следующей проблемой:
При первой инициализации сцены я начинаю с:
[[CCDirector sharedDirector] runWithScene: [MenuScene node]];
При переключении между сценами я всегда использую:
[[CCDirector sharedDirector] replaceScene:[SceneName node]];
Это работает нормально, я могу переключиться с MenuScene на GameScene, затем на GameOverScene и затем обратно на MenuScene. Но когда я снова переключаюсь на GameScene, затем снова на GameOverScene и пытаюсь переключиться на MenuScene во 2-й раз (3-й раз, если вы учитываете начальный вызов runWithScene), приложение вылетает, и я получаю сообщение об ошибке:
*** -[EAGLView swapBuffers]: message sent to deallocated instance 0x9614f80
sharedlibrary apply-load-rules all
Из того, что я прочитал, всегда должна существовать хотя бы одна сцена (что должно быть в данном случае?). Я также пытался оставить исходную сцену нетронутой, используя pushScene для всех других сцен и popScene в конце, чтобы вернуться к MenuScene, но я получаю ту же ошибку таким же образом, также и во 2-й серии.
Моя реализация 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