• 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);

    }

     

  • 相关阅读:
    [技术][RIA]<<Silverlight2完美征程>> 李会军
    HTML5+CSS3 W3C规范<<中文版>>参考手册(提供下载)
    爱情四十五课,别唱独角戏
    爱情四十八课,深情淡如水
    爱情四十九课,畸恋小变态
    爱情四十三课,热战与冷战
    背完这444句,你的口语绝对不成问题了
    [沟通][两性]<<为什么男人爱说谎女人爱哭 (Why men lie and wowen cry)>>艾伦皮斯.芭芭拉皮斯(美)
    做网站用UTF8还是GB2312?
    查询ORACLE表的约束
  • 原文地址:https://www.cnblogs.com/oumygade/p/4422987.html
Copyright © 2020-2023  润新知