cocos2D освобождение CCScheduler

Эта проблема начала возникать, когда я переклассифицировал CCSprite (Entity) для получения сенсорного ввода. Когда я ухожу от главной сцены, нажимая на другую, я заставляю все сущности удалять свое делегирование из общего CCTouchDispatcher (то есть onExit()). И затем повторно активировать, когда основная сцена возвращается (onEnterTransistionFinished()).

В половине случаев это работает нормально. Однако в другой раз это происходит:

cocos2d: deallocing <CCScheduler: 0x2323a0>

Что я нахожу довольно странным. Можно ли предположить, что причиной проблемы являются делегаты Touch? Или это, возможно, связано с памятью?

2 ответа

Решение

Если я правильно помню, проблема возникла из-за попытки дважды зарегистрировать / отменить регистрацию одного и того же объекта в / из TouchDispatcher (т.е. у него не было времени для отмены регистрации / регистрации, прежде чем я попытался зарегистрировать / отменить повторную регистрацию).

Я решил это, добавив немного BOOL _didRegisterWithTouchDispatcher, чтобы избежать подобных действий.

Вы возможно выпускаете [[CCScheduler sharedScheduler] release]? Если так, не делай этого.

CCScheduler - это синглтон. Оно никогда не должно освобождаться само по себе.

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