定时器的几种常用用法

2019-04-12  本文已影响0人  coming_168

CADisplayLink定时器

1.创建CADisplayLink定时器:当下一次屏幕刷新(刷帧)的调用(一秒钟刷新60)

CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(change)];

2.想要让CADisplayLink工作,必须得要把它添加到主运行循环当中

[link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];

NSTimer定时器

1.创建一个自动执行任务的定时器

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerAction:) userInfo:@"12345" repeats:YES];

2.想要让定时器在拖动其他控件时也不停止,必须要将运行的模式修改为NSRunLoopCommonModes

[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

3.定时器停止方法

[timer invalidate];
// self.timer = nil;

CGD方式

    // 获取全局子线程队列
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    // 创建timer添加到队列中
    dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
    // 设置首次执行事件、执行间隔和精确度
    dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0.1 * NSEC_PER_SEC);
    // 处理事件block
    dispatch_source_set_event_handler(timer, ^{
        
    });
    // 激活timer
    dispatch_resume(timer);
    // 取消timer
//    dispatch_source_cancel(timer);
上一篇下一篇

猜你喜欢

热点阅读