NSTimer的使用

一、NSTimer创建方式

     1.通过[NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(showAction) userInfo:nil repeats:YES];来创建   

        打印出来的日志如下

2016-09-03 08:16:32.512 excersize[535:10412] ++++++++++++++++++++
2016-09-03 08:16:35.512 excersize[535:10412] ++++++++++++++++++++
2016-09-03 08:16:38.513 excersize[535:10412] ++++++++++++++++++++
2016-09-03 08:16:41.513 excersize[535:10412] ++++++++++++++++++++
2016-09-03 08:16:44.513 excersize[535:10412] ++++++++++++++++++++
2016-09-03 08:16:47.513 excersize[535:10412] ++++++++++++++++++++
2016-09-03 08:16:50.513 excersize[535:10412] ++++++++++++++++++++
2016-09-03 08:16:53.514excersize[535:10412] ++++++++++++++++++++
2016-09-03 08:16:56.514 excersize[535:10412] ++++++++++++++++++++
2016-09-03 08:16:59.513 excersize[535:10412] ++++++++++++++++++++
2016-09-03 08:17:02.513 excersize[535:10412] ++++++++++++++++++++
2016-09-03 08:17:05.513 excersize[535:10412] ++++++++++++++++++++
2016-09-03 08:17:08.514 excersize[535:10412] ++++++++++++++++++++
2016-09-03 08:17:11.514 excersize[535:10412] ++++++++++++++++++++
2016-09-03 08:17:14.514 excersize[535:10412] ++++++++++++++++++++
2016-09-03 08:17:17.513 excersize[535:10412] ++++++++++++++++++++
2016-09-03 08:17:20.514 excersize[535:10412] ++++++++++++++++++++
    从打印的日志中可以看出该方法是不能实现精确定时的。    ];

2.通过//1.创建NSTimer

    NSTimer * timer = [NSTimer timerWithTimeInterval:5.0 target:self selector:@selector(showAction) userInfo:nil repeats:YES];
    //2.把定时器添加到当前的RunLoop中,并选择NSRunLoopCommonModes 运行模式
    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

来创建。【注】在该种创建方式下必须将timer添加到相应的RunLoop模式下,否则timer不起作用。


二、精确定时GCD定时器

@interface ViewController ()
/****定时器(这里不用带*,因为dispatch_source_t就是个类,内部已经包含了*)*****/
@property(nonatomic,strong) dispatch_source_t timer;
@end

-(void)gcdTimer
{
    
    //0.创建队列
    dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
    //1.创建一个GCD定时器
    
    dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
    self.timer = timer;
    //2.设置定时器开始时间、间隔时间、精准度
    /**  第一个参数:要给哪个定时器设置
     第二个参数:开始时间
     第三个参数:间隔时间
     第四个参数:精准度(误差) 一般为0
     GCD的单位是纳秒
     *
     */
    dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 4 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
    //3.设置定时器要调用的方法
    dispatch_source_set_event_handler(timer, ^{
        NSLog(@"-------------------------");
            });
    //4.恢复启动定时器
    dispatch_resume(timer);
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值