#objective-c #cocos2d-iphone #xcode4.2
#цель-c #cocos2d-iphone #xcode4.2
Вопрос:
Я хочу отбрасывать некоторые объекты через каждые 5 секунд. Моя проблема в том, что животное, которое первым появляется на экране, падает, но животные после этого не падают, они остаются на своих исходных позициях.
мой код для выпадения animal:
-(void)dropAnimal
{
[self performSelector:@selector(dropAnimal) withObject:nil afterDelay:5];
prevojectIndex=objectIndex;
prevIndex=currentIndex;
float padding = sw*128/768;
float x = (float)(arc4random()%(int)(sw-padding*2)) padding;
if([SpritesARRAY count]>0)
{
objectIndex=arc4random()%[SpritesARRAY count];
object=[SpritesARRAY objectAtIndex:objectIndex];
object.falling = YES;
currentIndex=arc4random()%[animalsArray count];
[object initWithSpriteFrameName:[animalsArray objectAtIndex:currentIndex]];
object.position = ccp(x, sh*31/32-self.position.y);
objectsDictionary=[NSMutableDictionary dictionary];
[objectsDictionary setObject:object forKey:[[NSNumber numberWithInt:objectIndex] stringValue]];
[objectsDictionary retain];
[SpritesARRAY removeObjectAtIndex:objectIndex];
[self animateAnimal];
}
}
-(void) animateAnimal
{
FallAnimal *CurObject=[objectsDictionary objectForKey:[[NSNumber numberWithInt:objectIndex] stringValue]];
[CurObject runAction:[CCMoveTo actionWithDuration:2 position:CGPointMake(CurObject.position.x,90)]];
[CurObject release];
}
Ответ №1:
Вы не должны выпускать CurObject здесь:
-(void) animateAnimal
{
FallAnimal *CurObject=[objectsDictionary objectForKey:[[NSNumber numberWithInt:objectIndex] stringValue]];
[CurObject runAction:[CCMoveTo actionWithDuration:2 position:CGPointMake(CurObject.position.x,90)]];
[CurObject release]; // <-- makes no sense, you did not retain it!
}
Комментарии:
1. Если я не выпускаю CurObject.. проблема та же. Вы знаете, в чем основная проблема??
2. Проверьте свой код на наличие других проблем с управлением памятью. У вас могут возникнуть всевозможные проблемы из-за неправильного понимания управления памятью. Запустите «Product -> Analyze» в Xcode, чтобы компилятор помог вам найти такие случаи.