我遇到以下代码问题。
mySpriteArray=[[NSMutableArray alloc] init];star=[CCSprite spriteWithFile:@"22.png"]; for(int i=0;i<10; i++) { [mySpriteArray insertObject:star atIndex:i]; } // NSLog(@"x=%i",[mySpriteArray count]); for (int i=0; i<10; i++) // Opponents is NSMutableArray { CCSprite *tempSprite = (CCSprite *) [mySpriteArray objectAtIndex:i]; tempSprite.position=ccp(100,100); [self addChild:tempSprite]; }
} 其中star是CCSprite的对象,mySpriteArray是一个可变数组。问题是当我运行程序时崩溃并说
*断言失败 - [GameScene addChild:z:tag:],/ Users / salimsazzad / Desktop / balon hunter / libs / cocos2d / CCNode.m:305 2010-10-08 19:05:35.854 balon hunter [3967:207] * 由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'child已添加。它不能再添加'。
我无法理解什么是错的,我在10次中添加10个对象,而不是1个对象,因为CCSprite * tempSprite =(CCSprite *)[mySpriteArray objectAtIndex:i];每次都创建一个新对象。 那么问题是什么?
答案 0 :(得分:1)
您已创建一次星形对象,并将其添加10次到阵列:
star=[CCSprite spriteWithFile:@"22.png"];
for(int i=0;i<10; i++)
{
[mySpriteArray insertObject:star atIndex:i];
}
所以你的数组包含相同的对象,这就是你得到断言的原因。