Ios Cocos2d CCSprite位置解除分配错误

Ios Cocos2d CCSprite位置解除分配错误,ios,memory-management,cocos2d-iphone,sprite,Ios,Memory Management,Cocos2d Iphone,Sprite,当我使用以下代码运行游戏时,当玩家与enemy2相交时,我的游戏崩溃,并且在调试过程中出现以下错误 错误: ***-[CCSprite position]:消息发送到解除分配的实例0xa8cabd0 代码: 这是我的回溯,如果有帮助的话: #0 0x01a83e1e in ___forwarding___ () #1 0x01a83ce2 in __forwarding_prep_0___ () #2 0x000e4fab in -[Survival collisionDetection]

当我使用以下代码运行游戏时,当玩家与enemy2相交时,我的游戏崩溃,并且在调试过程中出现以下错误

错误:
***-[CCSprite position]:消息发送到解除分配的实例0xa8cabd0

代码:

这是我的回溯,如果有帮助的话:

#0  0x01a83e1e in ___forwarding___ ()
#1  0x01a83ce2 in __forwarding_prep_0___ ()
#2  0x000e4fab in -[Survival collisionDetection] (self=0x12b975c0, _cmd=0x14a5e0) at Survival.m:521
#3  0x0005babb in -[CCTimer update:] (self=0x1281af50, _cmd=0x13347c, dt=0.0494979993) at CCScheduler.m:141
#4  0x00064a20 in -[CCScheduler tick:] (self=0xa8c9b70, _cmd=0x13c8fa, dt=0.0494979993) at CCScheduler.m:606
#5  0x0008d9ef in -[CCDirectorIOS drawScene] (self=0x9466d20, _cmd=0x136bdf) at CCDirectorIOS.m:152
#6  0x0008ffda in -[CCDirectorDisplayLink mainLoop:] (self=0x9466d20, _cmd=0x142bcd, sender=0x1208c2b0) at CCDirectorIOS.m:721
#7  0x005e22db in CA::Display::DisplayLink::dispatch ()
#8  0x005e21af in CA::Display::TimerDisplayLink::callback ()
#9  0x01af1966 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ ()
#10 0x01af1407 in __CFRunLoopDoTimer ()
#11 0x01a547c0 in __CFRunLoopRun ()
#12 0x01a53db4 in CFRunLoopRunSpecific ()
#13 0x01a53ccb in CFRunLoopRunInMode ()
#14 0x021c8879 in GSEventRunModal ()
#15 0x021c893e in GSEventRun ()
#16 0x00b63a9b in UIApplicationMain ()
#17 0x000c083f in main (argc=1, argv=0xbffff5a0) at main.m:14
这里是我初始化enemy2的地方:

enemy2 = [CCSprite spriteWithFile:@"SpaceShip2.png"];
enemy2.position = ccp(500,700);
[self addChild:enemy2];

enemy2可能已经释放了。它将通过您的
if(enemy2)
检查,因为enemy2是一个地址,而不是零,但该地址的对象已被解除分配。

请提供初始化enemy2变量的代码确定我使用了BOOL,以检查其是否处于活动状态,但敌人最终仍会解除锁定。。。什么原因会导致这种情况?@Skullz检查您的代码,可能是您在某个地方发布了
enemy2
will
[self-removeChild:enemy2 cleanup:YES]释放精灵?是的,如果您没有保留它,并且按照通常的方式制作,[CCSprite spriteWith…]我几乎可以肯定是自动释放的。
enemy2 = [CCSprite spriteWithFile:@"SpaceShip2.png"];
enemy2.position = ccp(500,700);
[self addChild:enemy2];