iOS 中几种常用的定时器
来源:互联网 发布:d3.js 颜色渐变 编辑:程序博客网 时间:2024/06/16 07:58
定时器是开发中常用一中工具,定时器常用的为NSTimer,CADisplayLink以及GCD定时器
- NSTimer
NSTimer也分为两种情况- 一个方法是自动加入当前线程的RunLoop中,并且运行模式为NSDefaultRunLoopMode模式,不需要手动开启,代码如下
注意:如果想要在有scrollView拖动的情况下定时器也能使用必须手动切换其运行模式到NSRunLoopCommonModes/*第一个参数:时间间隔第二个参数:方法的调用者第三个参数:执行的方法最后一个参数:是否需要重复*/NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(demo1) userInfo:nil repeats:YES];
//切换到NSRunLoopCommonModes[[NSRunLoop mainRunLoop]addTimer:timer forMode:NSRunLoopCommonModes];
- 另外一种创建方式必须要手动把NSTimer对象加入到对应的RunLoop中,并且制定运行模式才可以运行,代码如下:
/* 第一个参数:时间间隔 第二个参数:方法的调用者 第三个参数:执行的方法 最后一个参数:是否需要重复 */NSTimer *timer = [NSTimer timerWithTimeInterval:2 target:self selector:@selector(demo) userInfo:nil repeats:YES];[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
- 一个方法是自动加入当前线程的RunLoop中,并且运行模式为NSDefaultRunLoopMode模式,不需要手动开启,代码如下
CADisplayLink
这个定时器和NSTimer有很多相同之处,它也是依赖于RunLoop运行的,唯一的区别是,它的频率是60Hz,创建方式如下:CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(demo)]; [link addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
以下这幅图中可以看出CADisplayLink的执行频率
CADisplayLink的调用频率图:Snip20160717_6.png
NSTimer的调用频率图:Snip20160717_7.pngGCD定时器
CGD定时器就和NSTimer以及CADisplayLink有很多不同之处了- 首先,CGD定时器是独立于RunLoop执行的
- 其次,CGD定时器的最小时间间隔单位是纳秒(1秒=10的10次方纳秒)
- 然后,CGD定时器的创建和使用是一套纯C语言库,用起来相对来讲麻烦一下
话不多说直接上代码//创建dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,0,0,queue);//这里必须有一个强指针指向,因为GCD定时器本质还是一个OC对象self.timer = timer;//设置定时器开始时间,这里的时间单位是纳秒dispatch_time_t startTime = dispatch_time(DISPATCH_TIME_NOW,2 * NSEC_PER_SEC);//设置定时器dispatch_source_set_timer(timer,startTimer,(int64_t)(2 * NSEC_PER_SEC),0);//设置定时器所做的事情,block回调dispatch_source_set_event_handler(timer,^{//定时器要做的事情});//CGD定时器默认是暂停的,需要手动开启dispatch_resume(timer);//定时器的关闭dipatch_cancel(self.timer);self.timer = nil
关于常用的定时器就介绍这么多,希望对大家有所帮助
文/落雪无痕_t(简书作者)
原文链接:http://www.jianshu.com/p/0194a0866872
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
原文链接:http://www.jianshu.com/p/0194a0866872
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
0 0
- iOS 中几种常用的定时器
- IOS中常用的定时器有三种
- iOS常用定时器
- iOS中几种定时器的介绍
- iOS中的三大定时器 iOS开发中定时器经常会用到,iOS中常用的定时器有三种,分别是NSTime,CADisplayLink和GCD。
- IOS定时器的使用
- IOS-定时器的创建
- iOS定时器的实现
- iOS-定时器的使用
- iOS中几种定时器
- iOS中几种定时器
- linux下常用的定时器
- Android中几种常用的定时器和延时方法
- Android中几种常用的定时器和延时方法
- IOS 定时器NSTimer的使用
- iOS NSTimer 定时器的使用
- iOS中定时器的使用
- iOS开发,定时器的使用
- 半透明Activity来实现对话框效果小技巧
- 充电送APP?火车站的这种充电桩太可怕了!
- Visualising Residuals
- Light OJ 1138 (二分查找+分解阶乘)
- Terminator 四窗口配置文件
- iOS 中几种常用的定时器
- java中+=是什么意思
- MTK Android 5.0以上版本的变化
- OpenCV中mat::copyto( )函数使用方法
- mysql 5.7.14安装成功
- JQ点击展开二级菜单
- 前端自动化工具grunt介绍
- HDOJ-【Gym Class】
- 【MySQL】数据库操作基础笔记