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];//取消定时器--永久停止

     

  • 相关阅读:
    文件和网络
    设备支持
    用户界面概述
    介绍
    图形和描画
    应用程序偏好设置
    文本和Web
    人机界面准则:创建优秀的用户界面
    事件处理
    iPhone OS平台:丰富的可能性
  • 原文地址:https://www.cnblogs.com/moxuexiaotong/p/4967863.html
Copyright © 2011-2022 走看看