iOS NSTimer

1. 初始化方法

有以下三种初始化方法:

  使用 scheduledTimerWithTimeInterval:invocation:repeats: 或者scheduledTimerWithTimeInterval:target:selector:userInfo:repeats: 这两个类方法创建一个timer并把它指定到一个默认的runloop模式中

  使用 timerWithTimeInterval:invocation:repeats: 或者 timerWithTimeInterval:target:selector:userInfo:repeats:这两个类方法创建一个timer的对象,没有把它指定到run loop中. (当创建之后,你必须手动的调用NSRunLoop下对应的方法 addTimer:forMode: 去将它制定到一个runloop模式中.)

  使用 initWithFireDate:interval:target:selector:userInfo:repeats: 方法分配并创建一个NSTimer的实例 (当创建之后,你必须手动的调用NSRunLoop下对应的方法 addTimer:forMode: 去将它制定到一个runloop模式中.)

 

2. 触发timer

可以通过初始化的轮询触发timer; 也可以手动触发,即使没有达到执行条件

[timer对象 fire];

 

3. 关闭、开启timer,是通过FireDate去设置的

[timer对象 setFireDate:[NSDate distantFuture]]; // 开启

[timer对象 setFireDate:[NSDate distantPast]]; // 关闭

实际上,在初始化的方法  initWithFireDate:interval:target:selector:userInfo:repeats:  中,就可以通过控制参数FireDate 初始化"开启状态的Timer"或者"关闭状态的Timer"

 

4. 删除timer

[timer对象 invalidate];

推荐在删除timer之前,判断一下待删除的timer是否在线程中,[timer对象 isValid] // 判断是否在线程中

if ([timer对象 isValid] == YES) {

        [timer对象 invalidate];

        timer对象 = nil;

    }

 

5. 定时器暂停、开启、继续的方法,是通过fireDate控制的

[timer setFireDate:[NSDate date]];  //  继续

[timer setFireDate:[NSDate distantPast]];   //  开启

[timer setFireDate:[NSDate distantFuture]]; //  暂停

 

6. test

- (void)viewDidLoad {

    [super viewDidLoad];

    // 初始化方法一

    [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(timerStudy) userInfo:nil repeats:YES];

   

  /* 初始化方法二

    NSTimer *timer = [NSTimer timerWithTimeInterval:2.0 target:self selector:@selector(timerStudy) userInfo:nil repeats:YES];

    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];

     */

    

    /* 初始化方法三

    NSTimer *timer2 = [[NSTimer alloc]initWithFireDate:[NSDate  distantFuture] interval:2.0 target:self selector:@selector(timerStudy) userInfo:nil repeats:YES];

    [[NSRunLoop currentRunLoop] addTimer:timer2 forMode:NSDefaultRunLoopMode];

     */

 }

static int count;

- (void)timerStudy

{

  NSLog(@"%d",count);

}

 

posted @ 2015-04-13 19:04  oumygade  阅读(230)  评论(0编辑  收藏  举报