Я строю игру cocos2d, в котором после того, как две отдельные спрайты конфликтует (по простой технологии ограничительной рамки), я называюDealloc вызывает сбой в переходе между сценами в Cocos2D
[[CCDirector sharedDirector] replaceScene:gameOverScene];
, чтобы перейти к игре над сценой.
После того, как он инициализирует игру на сцену и все в нем, игре вылетает и идет к этому методу в ccArray.m
классе:
void ccArrayRemoveAllObjects(ccArray *arr) { while(arr->num > 0) CC_ARC_RELEASE(arr->arr[--arr->num]); }
с сообщением: Темы 1: Программа получила сигнал: "EXC_BAD_ACCESS".
Я пытался отладки с помощью контрольных точек и понял, что когда-то моя GameOver сцена будет инициализирована и готова к отображению, метод dealloc
в предыдущем классе (классе геймплей, который называется сценой заменить) вызывается и после чего выдает эту ошибку.
Мой update
метод:
-(void)update:(ccTime)dt {
if (CGRectIntersectsRect(plane.boundingBox, enemy.boundingBox)) {
CCScene *gameOverScene = [GameOverLayer sceneWithWon:NO]; [[CCDirector sharedDirector] replaceScene:gameOverScene]; } }
Мой dealloc
метод:
- (void) dealloc {
[super dealloc];
[_monsters release];
_monsters = nil;
[mole release];
mole = nil;
[text release];
text = nil;
[mBG1 release];
mBG1 = nil;
[mBG2 release];
mBG2 = nil; }
У меня есть не знаю, почему это происходит. Пожалуйста помоги.
Спасибо вам в ожидании.
Вы можете разместить свой метод dealloc класса игрового процесса или любого соответствующего кода аварии? – giorashc
@giorashc Пожалуйста, снова просмотрите вопрос о коде. Я отредактировал его. – hyd00