文档章节

GCD定时器

AppleDream
 AppleDream
发布于 2016/08/02 11:09
字数 234
阅读 30
收藏 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
粉丝 9
博文 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

没有更多内容

加载失败,请刷新页面

加载更多

javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
0
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linux-tao
昨天
0
0
学习设计模式——中介者模式

1. 认识中介者模式 1. 定义:用一个中介对象来封装一系列的对象交互行为,中介者使得各对象不需要显式的互相引用,从而使其松散耦合,独立的改变他们之间的交互。 2. 结构: Mediator:中介者...

江左煤郎
昨天
0
0
深入理解Plasma(1):Plasma 框架

这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章作为开篇,主要目的是理解 Plasma 框架。 Plasma 作为以太坊的二层扩容...

HiBlock
昨天
0
0
Java 8 日期 示例

Java 8 推出了全新的日期时间API。Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限。Java也意识到需...

阿刚ABC
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部