6.15. Creating Timers


You would like to perform a specific task repeatedly with a certain delay. For instance, you want to update a view on your screen every second that your application is running.


Use a timer:

- (void) paint:(NSTimer *)paramTimer{
  /* Do something here */

- (void) startPainting{
  self.paintingTimer = [NSTimer 

- (void) stopPainting{
  if (self.paintingTimer != nil){
    [self.paintingTimer invalidate];    

- (void)applicationWillResignActive:(UIApplication *)application{
  [self stopPainting];

- (void)applicationDidBecomeActive:(UIApplication *)application{
  [self startPainting];

The invalidate method will also release the timer, so that we don’t have to do that manually. As you can see, we have defined a property called paintingTimer that is declared in this way in the header file (.h file):

#import <UIKit/UIKit.h>

@interface Creating_TimersAppDelegate : UIResponder <UIApplicationDelegate>

@property (nonatomic, strong) UIWindow *window;
@property (nonatomic, strong) NSTimer *paintingTimer;



A timer is an object that fires an event at specified intervals. A timer must be scheduled in a run loop. Defining an NSTimer object creates a nonscheduled timer that does nothing but is available to the program when you want to schedule it. Once you issue a call, e.g. scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:

Get iOS 6 Programming Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.