在我的项目中,我有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版本中可用)或保留字符串。