【发布时间】:2012-08-02 23:12:44
【问题描述】:
我在它的 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
我有一种感觉,它是某种预定的方法或其他东西..
【问题讨论】:
标签: objective-c memory-management cocos2d-iphone