文档章节

GCD定时器

AppleDream
 AppleDream
发布于 2016/08/02 11:09
字数 234
阅读 28
收藏 0

GCD定时器

#####1.1.GCD定时器基本应用

-(void) baseGCD{
    //创建一个GCD定时器
    //<#dispatch_source_type_t type#>  DISPATCH_SOURCE_TYPE_TIMER
    self.timer=dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0 ));
    //设置定时器什么时候起动,间隔是多少
    dispatch_source_set_timer(self.timer, DISPATCH_TIME_NOW, 2.0*NSEC_PER_SEC, 0);
    //设置定时器要做的事情
    dispatch_source_set_event_handler(self.timer, ^{
        NSLog(@"start --v%@",[NSThread currentThread]);
    });
    //定时器默认是没有启动的,所以要托运启动
    dispatch_resume(self.timer);
}

#####2.1.加强版GCD

int count=0;
-(void) GCD{

    //GCD不受runLoop模式的影响

    dispatch_queue_t queue=dispatch_get_global_queue(0, 0);

    //创建一个GCD定时器
    //DISPATCH_SOURCE_TYPE_TIMER
    self.timer=dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
    //设置定时器什么时候起动,间隔是多少
    //when:何时开始
    dispatch_time_t start=dispatch_time(DISPATCH_TIME_NOW, 3.0*NSEC_PER_SEC);
    //间隔
    uint64_t interval=2.0*NSEC_PER_SEC;

    dispatch_source_set_timer(self.timer, start, interval, 0);
    //设置定时器要做的事情
    dispatch_source_set_event_handler(self.timer, ^{
        NSLog(@"start --v%@",[NSThread currentThread]);
        //执行五次后自动释放gcd
        count++;
        if (count>4) {
            dispatch_cancel(self.timer);
            self.timer=nil;
        }
    });
    //定时器默认是没有启动的,所以要托运启动
    dispatch_resume(self.timer);
}

© 著作权归作者所有

共有 人打赏支持
AppleDream
粉丝 8
博文 92
码字总数 26198
作品 0
昆山
程序员
iOS 定时器

iOS里面使用的定时器类型一般有三种NSTimer、CADisplayLink、GCD。 1、最精准的定时器 - GCD 2、最简单的定时器 - NSTimer 3、最适合做界面渲染的定时器 - CSDisplayLink...

linweida
2016/09/06
4
0
iOS的定时器用法

定时器在项目中还是经常用到的,很多情况下为了省事我们都是在主线程中直接用,但这样经常会造成阻塞,影响定时器的准确性,对时间精度要求比较高的地方还会给人很不好的体验,比如卡顿等等,...

hungryBoy
2016/03/11
43
0
iOS定时器--NSTimer、CADisplayLink、GCD

前言 在最近的项目开发过程中,遇到了需要运用定时器的需求,在以前的项目中,也没用过定时器。最近做的一个项目很有几个地方用到了定时器,短信验证码倒计时、倒计时取消订单,定时网络请求...

WB_小文
2017/11/20
0
0
iOS中几种常见的定时器的使用

前言 iOS开发中定时器经常会用到,常用的定时器有三种,分别是NSTime,CADisplayLink和GCD。 一、NSTimer 方式1 // 创建定时器 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2...

han笑笑
2016/11/03
4
0
GCD(一次性代码、栅栏函数、延迟执行、定时器)

GCD(一次性代码、栅栏函数、延迟执行、定时器) 一次性代码 作用:程序运行过程中直到销毁只会执行一次` 延迟执行 栅栏函数 作用:只有当栅栏函数执行完毕后才能执行后面的函数 需求:使用栅栏...

法斗斗
04/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JS:异步 - 面试惨案

为什么会写这篇文章,很明显不符合我的性格的东西,原因是前段时间参与了一个面试,对于很多程序员来说,面试时候多么的鸦雀无声,事后心里就有多么的千军万马。去掉最开始毕业干了一年的Jav...

xmqywx
今天
0
0
Win10 64位系统,PHP 扩展 curl插件

执行:1. 拷贝php安装目录下,libeay32.dll、ssleay32.dll 、 libssh2.dll 到 C:\windows\system32 目录。2. 拷贝php/ext目录下, php_curl.dll 到 C:\windows\system32 目录; 3. p...

放飞E梦想O
今天
0
0
谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
今天
1
0
OSChina 周一乱弹 —— 有人要给本汪介绍妹子啦

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享水木年华的单曲《中学时代》@小小编辑 手机党少年们想听歌,请使劲儿戳(这里) @须臾时光:夏天还在做最后的挣扎,但是晚上...

小小编辑
今天
18
4
centos7安装redis及开机启动

配置编译环境: sudo yum install gcc-c++ 下载源码: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 解压源码: tar -zxvf redis-3.2.8.tar.gz 进入到解压目录: cd redis-3......

hotsmile
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部