Цель c ccTouchesBegan проблема - PullRequest
       19

Цель c ccTouchesBegan проблема

0 голосов
/ 09 августа 2010

У меня проблема с ccTouchesBegan

  <code>
- (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);
}
}
на линии
<code>location = [[CCDirector sharedDirector] convertToGL:location];
у меня такая ошибка
<code>
(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 голосов
/ 10 августа 2010

Часто строка, на которой вы находитесь, когда получаете EXC_BAD_ACCESS, не является строкой, вызывающей проблему.Я поместил полное объяснение того, что такое EXC_BAD_ACCESS и как его найти здесь:

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

В результате обычно вы говорите с освобожденными объектами или вы повредили указатель иликуча.Вот самые простые вещи:

  1. Запустите Build and Analyze и, в частности, посмотрите на проблемы, в которых говорится, что вы выпускаете слишком много раз.Он также может жаловаться на утечки (которые вы должны исправить), но они не могут вызвать EXC_BAD_ACCESS

  2. Запустите приложение с NSZombiesEnabled (см. Ссылку).Это приводит к тому, что все объекты никогда не освобождаются, но вместо этого превращаются в зомби, когда их retainCount достигает 0. Если вы попытаетесь отправить сообщение зомби, он будет жаловаться в консоли именно на строку, вызывающую проблему.

  3. Если ни один из этих способов не работает, вам нужно искать повреждение указателя / кучи.Лучший способ сделать это - включить Guard Malloc (см. Ссылку) и использовать команды gdb для проверки кучи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...