为什么这段代码会给出EXC_BAD_ACCESS?

时间:2011-05-21 05:37:30

标签: iphone cocos2d-iphone exc-bad-access

我正在使用Cocos2d for iPhone进行游戏。

在我的init方法中,我有一个声明如下的对象(类型id)(另请注意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 个答案:

答案 0 :(得分:1)

你有没有尝试过NSZombieEnabled,因为我不是一个cocos2d家伙,但只是作为一个建议我告诉你这个。因为只有当您指向一个不再存在于内存中的对象并且如果您尝试这样做时应用程序崩溃,则会出现错误的访问错误

答案 1 :(得分:0)

您未保留bossMov行动。因此,当您致电[boss stopAllActions];时,它会被释放并取消分配。然后你试图运行解除分配的操作 - 所以你得到了错误的访问权。