Игра вылетает после второго раза та же 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 и теперь он работает.
Может быть, это кому-то поможет.