在我的项目中,我有 10 个 Sprite ,每个 Sprite 都有一个唯一的 userData 值。在 ccTouch 方法中,我正在将一个 Sprite 复制到新 Sprite ,
但我无法获取 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: movl 8(%edx), %edi EXC_BAD_ACCESS
请任何人帮助我解决这个问题。
最佳答案
字符串是自动释放的。 userData
属性的类型为 void*,不会保留该对象。请改用 userObject
属性(如果在您的 cocos2d 版本中可用)或保留字符串。
关于ios - 无法访问 Sprite 的用户数据属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16117518/