Игра вылетает после второго раза та же CCScene заменяется

Это немного простая проблема, но я не мог понять это.

1-> Приложение запускается (со сценой MainMenu)

2-> Пуск (сцена подуровней заменена)

3-> Выберите Первый уровень (Level1Scene заменен. Игра началась.)

4-> Вернитесь в главное меню. (Сцена MainMenu заменена)

5-> Пуск (сцена подуровней заменена)

6-> Выберите первый уровень

7-> Сбои.

box (32842,0x3f5c9d98) malloc: * ошибка для объекта 0x4bed44: неверная контрольная сумма для освобожденного объекта - объект, вероятно, был изменен после освобождения. * установить точку останова в malloc_error_break для отладки

Когда я заменяю сцены от a до b, это релиз?

Насколько я знаю, только pushScene сохраняет сцену в памяти.

+(CCScene *) scene {

    CCScene *scene = [CCScene node];

    HelloWorldLayer *layer = [HelloWorldLayer node];

    [scene addChild: layer];

    return scene;
}

Сцена и слой являются объектами автоматического выпуска. Должен быть освобожден при вызове replaceScene. (Если предыдущая сцена выпущена во время замены сцены.)

1 ответ

Я решил эту проблему. Это странно, но работает.

У меня был класс, который подкласс CCSprite называется Collectable. При падении во второй раз происходит замена сцены, в которой есть объект Collectable. Я преобразовал его в CCNode и теперь он работает.

Может быть, это кому-то поможет.

Другие вопросы по тегам