Я создаю игру, используя cocos2d. Вот метод, названный когда игра Создание:сбой приложений после второй CCScene, заменяющий
- (void)createGame
{
GameScene *newScene = [[GameScene alloc] initWithController:self]; //subclass of CCScene
if ([CCDirector sharedDirector].runningScene)
[[CCDirector sharedDirector] replaceScene:newScene];
else
[[CCDirector sharedDirector] pushScene:newScene];
scene = newScene;
//some controllers for some layers of my scene
box2d = [[Box2DController alloc] initWithParent:self];
menu = [[MenuController alloc] initWithParent:self];
controls = ([[ControlsController alloc] initWithParent:self]);
self.controllers = [[NSArray alloc] initWithObjects:box2d, menu, controls, nil];
//some object, contains some parameters. rizeEvent tells about some event to all controllers. In this case, it sends pointer to worldState to all of them.
worldState = [[WorldState alloc] init];
EventArgs *eventArgs1 = [[EventArgs alloc] initWithSender:self params:worldState];
[self riseEvent:@"WorldStateUpdate" withArgs:eventArgs1];
}
У меня есть кнопка, которая разрушает мой мир, и создает новый один:
- (void)onExitPressedWithArgs:(EventArgs *)e
{
[self destroyGame];
[self createGame];
}
Вот 'destroyGame' метод:
- (void)destroyGame
{
[box2d release];
[menu release];
[controls release];
[scene release];
[worldState release];
box2d = nil;
menu = nil;
controls = nil;
scene = nil;
worldState = nil;
[self.controllers release];
self.controllers = nil;
}
Итак, я запускаю свои заявки:
- 'CreateGame' называется
- нажатием кнопки 'перезагрузка'
- 'onExitPressedWithArgs' называется
- 'destroyGame' и 'createGame' называются
- Новый мир, созданный, все идет тонкая кнопка
- нажатием 'перезагрузки', 'onExitPressedWithArgs', 'destroyGame' и 'createGame' называются
- Сбой приложений.
Он всегда срабатывает в разных частях кайда, но всегда с исключением "EXC_BAD_ACCESS".
+1 на rishi для объяснения – samfisher
Спасибо за ответ и совет. Я не думаю, что это проблема моей проблемы, но я сделал это. Проблема не исчезла. Почему он сбивает все подряд артер * вторая * замена? – SentineL
Вы пробовали использовать NSZombie? – rishi