我在它的 init 方法中有这个精灵
lineDrawer = [[LineDrawer alloc]initWithLineColor:ccc3(color.r, color.g, color.b)];
lineDrawer.position = ccp(0,0);
lineDrawer.anchorPoint = ccp(1,1);
[self addChild:lineDrawer];
[self addChild:head];
[lineDrawer release];
这里没有错吧?我可以在 addchild 保留对象时释放它。(自动释放也可以)
虽然当我发布后,我会得到 EXC_BAD_ACCESS(code=1) 。我也尝试将发布移动到 dealloc 方法,但它给了我同样的错误。
唯一引用 lineDrawer 的对象是它定义的 spriteobject (Player : CCSprite) ,它没有 getter,所以它甚至不能被另一个对象访问,所以我不明白这是怎么发生的。什么时候可以调用 lineDrawer 当只有所有者引用它时它被释放了?
它发生在 CCLayer 的 draw 方法中的 CC_NODE_DRAW_SETUP() 行。
有什么提示吗?我知道这些问题总是因为缺少代码而很难解决,但是很难知道要向您展示什么代码。如果我知道我可能会自己解决它。我也尝试在仪器中调试它,但我不知道在哪里看。
更新,我尝试在启用僵尸的情况下进行调试
这对你有什么影响吗?这是 LineDrawer 类。这是我稍微修改过的其他人的课程。
http://pastebin.com/7Uv4GULy
http://pastebin.com/08NHeVt9
我有一种感觉,它是某种预定的方法或其他东西..