2013-04-20 167 views
1

在我的項目我有10精靈,具有獨特的用戶數據value.During 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); 
    } 

Finaly我得到LLDB錯誤

0x170409b:MOVL 8(%EDX),%EDI EXC_BAD_ACCESS

請任何人幫我解決這個問題。

+0

s.userData和temp.userData都是空的嗎?你在哪裏得到錯誤 - 在日誌聲明中? – Mundi 2013-04-20 09:02:01

回答

0

將一個對象分配給另一個變量不會複製它。請記住,對象只是表示爲指向對象的指針。

temp=s; 

temp

也指出 st.userData已經是 s.userData,因爲它們是同一個對象。

嘗試

temp = [s copy]; 
1

字符串會被自動釋放。 userData屬性的類型爲void *,不會保留該對象。改爲使用userObject屬性(如果在您的cocos2d版本中可用)或保留該字符串。