在我的项目中我有10个精灵,每个精灵都有一个唯一的userData值。在ccTouch方法中我将精灵复制到新的精灵,
但是我无法获得精灵用户数据值。
我的编码是
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:movl 8(%edx),%edi EXC_BAD_ACCESS
请任何人帮我解决这个问题。
答案 0 :(得分:1)
该字符串是自动释放的。 userData
属性的类型为void *,不会保留该对象。请改用userObject
属性(如果在cocos2d版本中可用)或保留字符串。
答案 1 :(得分:0)
将一个对象分配给另一个变量不会复制它。请记住,对象只是表示为对象的指针。
之后
temp=s;
temp
也指向s
。 t.userData
已经s.userData
,因为它们是同一个对象。
尝试
temp = [s copy];