Почему этот код дает EXC_BAD_ACCESS? - PullRequest
1 голос
/ 21 мая 2011

Я работаю над игрой в Cocos2d для iPhone.

В моем методе init у меня есть объект (идентификатор типа), объявленный следующим образом (также обратите внимание, что bossDir объявлен как 1):

    bossMov = [CCMoveTo actionWithDuration:1.0f position:ccp(75*bossDir, 320-55)];
    [boss runAction:bossMov];

Затем в методе таймера у меня есть:

if ([bossMov isDone] == YES) {
    bossDir = -bossDir;
    [boss stopAllActions];
    [boss runAction:bossMov];
}

Он перемещает босса один раз, но после этого он дает EXC_BAD_ACCESS и указывает мне на строку в файле "CCTimer.m", которая говорит:

if( elapsed >= interval ) {
    impMethod(target, selector, elapsed); //This line in particular.
    elapsed = 0;
}

Как я могу решить эту проблему?

Ответы [ 2 ]

1 голос
/ 21 мая 2011

Вы пробовали NSZombieEnabled, потому что я не cocos2d парень, но просто как предложение, я говорю вам это. Потому что ошибка неверного доступа возникает только тогда, когда вы указываете на объект, которого больше нет в памяти, и происходит сбой приложения, если вы пытаетесь это сделать

0 голосов
/ 21 мая 2011

Вы не удерживаете bossMov действие.Поэтому, когда вы звоните [boss stopAllActions];, он освобождается и освобождается.Затем вы пытаетесь запустить освобожденное действие, чтобы получить неверный доступ.

...