iosobjective-cperformselector

Call method with multiple parameter by performSelector ios


This is my method with two parameters: imgArray and andDurationArray. I want to call this same method with same two parameters, in my else section, by performSelector. How can I call it? Thanks a lot in advance.

-(void) imageAnimationWithImage:(NSArray *) imgArray andDurationArray:(NSArray *) durationArr
{
    if (count == imgarray.count)
    {
        count = 0;
        [self imageAnimationWithImage:imgarray andDurationArray:durationArr];
    }
    else
    {
        emoImageView.image = [UIImage imageNamed:[imgarray objectAtIndex:count]];
        [self performSelector:@selector(imageAnimationWithImage:andDurationArray:) withObject:imgarray withObject:durationArr afterDelay:[[durationArr objectAtIndex:count] doubleValue]];
        count++;
    }
}

Solution

  • Use dispatch_after. It's much easier:

    double delay = [[durationArr objectAtIndex:count] doubleValue];
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self imageAnimationWithImage:imgarray andDurationArray:durationArr];
    });