目标c ccTouchesBegan问题

时间:2010-08-09 10:54:35

标签: objective-c cocos2d-iphone

我遇到ccTouchesBegan

的问题

  
- (void)ccTouchesBegan:(UITouch *)touches withEvent:(UIEvent *)event {
if (_mouseJoint != NULL) return;
_paddleBody=body2;
UITouch *myTouch = [touches anyObject];
CGPoint location = [myTouch locationInView:[myTouch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
b2Vec2 locationWorld = b2Vec2(location.x/PTM_RATIO, location.y/PTM_RATIO);
if (_paddleFixture->TestPoint(locationWorld)) {
b2MouseJointDef md;
md.bodyA = groundBody;
md.bodyB = _paddleBody;
md.target = locationWorld;
md.collideConnected = true;
md.maxForce = 1000.0f * _paddleBody->GetMass();
_mouseJoint = (b2MouseJoint *)_world->CreateJoint(&md);
_paddleBody->SetAwake(true);
}
}
在线上
location = [[CCDirector sharedDirector] convertToGL:location];
我有这样的错误

(gdb) continue
Program received signal: “EXC_BAD_ACCESS”.
Previous frame inner to this frame (gdb could not unwind past this frame)
Previous frame inner to this frame (gdb could not unwind past this frame)
而且我没有得到原因 请帮帮我,

1 个答案:

答案 0 :(得分:0)

很多时候,当您收到EXC_BAD_ACCESS时,您所在的行不是导致问题的行。我详细解释了EXC_BAD_ACCESS是什么以及如何在此处找到它:

http://www.loufranco.com/blog/files/Understanding-EXC_BAD_ACCESS.html

结果是,通常您正在与已发布的对象进行通信,或者您已损坏指针或堆。以下是最简单的事情:

  1. 运行构建和分析,并专门查看它可能会释放太多次的问题。它也可能会抱怨泄漏(您应该修复),但那些不能导致EXC_BAD_ACCESS

  2. 使用NSZombiesEnabled运行应用程序(请参阅链接)。这会导致所有对象永远不会释放,但是当它们的retainCount变为0时变成僵尸。如果您尝试向僵尸发送消息,它将在控制台中抱怨导致问题的确切行。

  3. 如果这些都不起作用,那么您需要查找指针/堆损坏。最好的方法是启用Guard Malloc(请参阅链接)并使用gdb命令检查堆。