Выпадающий спрайт через каждые 5 секунд

#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, чтобы компилятор помог вам найти такие случаи.