Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NSTimer Repeat x times only, then call a selector when it invalidates

Tags:

objective-c

Primarily I'm looking for a way to create an nstimer scheduledTimerWithTimeInterval that repeats every 3 seconds 10 times then invalidates just as a no-repeating timer would. Is this possible? Ideally an additional selector would fire once the timer invalidates too

like image 939
Timbo Avatar asked Jul 07 '10 06:07

Timbo


1 Answers

Just keep track of the number of loops and keep a reference to the timer object. Then just invalidate it when you've done enough.

// ivars
int loopCount;
NSTimer *myTimer;

// Method that calls your timer.
- (void)doStuff {
    loopCount++;
    if (loopCount >= 10) {
        [myTimer invalidate];
        myTimer = nil;
    } else {

        //do my stuff here...

    }
}

// Method that kicks it all off
- (IBAction)startDoingStuff {
    myTimer = [NSTimer scheduledTimerWithTimeInterval:3.0
                                               target:self
                                             selector:@selector(doStuff)
                                             userInfo:nil
                                              repeats:YES];
}
like image 106
Alex Wayne Avatar answered Nov 09 '22 02:11

Alex Wayne