回答

0

我解决了这个问题。问题实际上是在Box2d中。对于b2BodyDef我有这样的:

paddleBodyDef.userData = (__bridge_retained void*)paddleSprite; 

但这是不正确的(在我的情况)。正确的是这个

paddleBodyDef.userData = (__bridge void*)paddleSprite; 

此外,在dealloc方法我把

paddleBodyDef.userData = NULL; 
+0

是什么'paddleSprite'和'userData'的类型?上面的代码是否在ARC之下?我认为你可能在这里保留了'userData' ......(也许你的泄漏是由于保留周期造成的) – nielsbot 2013-03-14 05:16:33

+1

这也是很危险的,因为你声明精灵是弱的。如果在任何时候box2d userdata是唯一的引用到精灵,精灵解除分配和用户数据指针变成垃圾。您的网桥保留转换是正确的,您只需在将userdata设置为null之前将bridge_transfer强制转换为-1保留计数。 – LearnCocos2D 2013-03-14 08:09:37