在我的项目中,我有10个Sprite,每个Sprite都有一个唯一的userData值。在ccTouch方法中,我将Sprite复制到New Sprite,

但是我无法获得精灵用户数据值。

我的编码是

 for (int i=1; i<=10; i++)
      {
       CCSprite *zig=[CCSprite spriteWithFile:[NSString stringWithFormat:@"zig%d.png",i]];
        zig.position=ccp(325,60);
        zig.tag=i+1;
        zig.userData=[NSString stringWithFormat:@"%@",[zigpositionarray objectAtIndex:i-1]];
        [self addChild:zig z:2];
       [zigblurarray addObject:zig];
            NSLog(@"Userdata%@",zig.userData);
      }

在cctouchBegan方法中:
  for(CCSprite *s in zigblurarray)
  {
   if (CGRectContainsPoint(s.boundingBox, Newpt1))
   {
       temp=s;
       temp.userData=s.userData;
       NSLog(@"%d",temp.tag);
        NSLog(@"Userdata%@",temp.userData);
    }

最后我得到lldb错误

0x170409b:影片8(%edx),%edi EXC_BAD_ACCESS

请任何人帮助我解决这个问题。

最佳答案

该字符串会自动释放。 userData属性的类型为void *,并且不会保留该对象。改用userObject属性(如果在您的cocos2d版本中可用)或保留字符串。

07-28 03:34