zoukankan      html  css  js  c++  java
  • NSTimer定时器的简单总结

    NSTimer类是我们经常要用到的一个类库,它可以实现一个简单的定时器功能。

    NSTimer的初始化:

    1.添加一个每0.1s循环一次的NSTimer

    [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(go) userInfo:nil repeats:YES];
    
    -(void)go
    {
        NSLog(@"%@",[NSThread currentThread]);
    }

    2.使用NSInvocation添加调用的方式来创建NSTimer

    在ios中有两种方式来直接调用某个对象的消息,第一种是NSInvocation,第二种是performSelector:withObject:

    NSInvocation的优势是在参数大于2或者需要返回值处理的时候来使用

    SEL myselector = @selector(go);//创建一个函数签名
        NSMethodSignature *sig = [ViewController instanceMethodSignatureForSelector:myselector];//通过签名初始化
        NSInvocation *myinvo = [NSInvocation invocationWithMethodSignature:sig];//初始化NSInvocation
        int a = 1;
        [myinvo setArgument:&a atIndex:2];//设置参数的Index 需要从2开始,因为前两个被selector和target占用
        [myinvo setTarget:self];//设置target
        [myinvo setSelector:myselector];//设置调用函数
        [myinvo invoke];//启动
        [NSTimer scheduledTimerWithTimeInterval:1.0 invocation:myinvo repeats:YES];

    -(void)go
    {
        NSLog(@"%@",[NSThread currentThread]);
    }

    3.标准添加,通过Runloop的方式来添加

      NSRunLoop *myloop = [NSRunLoop currentRunLoop];//初始化一个runloop
      NSTimer *timer = [[NSTimer alloc]initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:1.0] interval:0.1 target:self selector:@selector(go) userInfo:nil repeats:YES];//设置NSTimer
      [myloop addTimer:timer forMode:NSDefaultRunLoopMode];//将timer添加到runloop上

     4.定时器的开启,停止和消失

        [timer setFireDate:[NSDate distantPast]];//开启定时器
        [timer setFireDate:[NSDate distantFuture]];//关闭定时器
        [timer invalidate];//取消定时器--永久停止

     

  • 相关阅读:
    BPM系统终于告一段落
    淘宝SOA框架dubbo学习(5)--结果缓存
    淘宝SOA框架dubbo学习(3)--搭建监控中心
    淘宝SOA框架dubbo学习(4)--参数验证
    淘宝SOA框架dubbo学习(1)--first demo
    淘宝SOA框架dubbo学习(2)--搭建Zookeeper注册中心服务
    SOA Dubbo分布式架构学习
    编程有害身体健康 且Coding且珍惜
    数据库日志收缩大小
    dax 计算某一列重复出现次数
  • 原文地址:https://www.cnblogs.com/moxuexiaotong/p/4967863.html
Copyright © 2011-2022 走看看