文档章节

GCD定时器

AppleDream
 AppleDream
发布于 2016/08/02 11:09
字数 234
阅读 34
收藏 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);
}

© 著作权归作者所有

共有 人打赏支持
下一篇: runLoop介绍
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

没有更多内容

加载失败,请刷新页面

加载更多

我的Linux系统九阴真经

在今天,互联网的迅猛发展,科技技术也日新月异,各种编程技术也如雨后春笋一样,冒出尖来了。各种创业公司也百花齐放百家争鸣,特别是针对服务行业,新型互联网服务行业,共享经济等概念的公...

问题终结者
7分钟前
0
0
Java 使用 gson 对 json 根据 key 键进行排序

引入Google的gson jar <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.0</version>......

yh32
9分钟前
0
0
Vue.use源码解析

什么是Vue插件 关于什么是Vue插件大家可以去看官网的解释 ,总得来说就是提供一个全局注册/调用的能力。 怎么用 我们以Weex为例。 首先有一个toast.js const Toast = {}Toast.install = (Vu...

peakedness丶
15分钟前
0
0
mybatis学习(2)

http://www.mybatis.org/spring/zh/factorybean.html 参考mybatis官网 Mybatis集成Spring: 使用Spring的IOC,将sqlSession(存在事物),交给Spring管理。 1.依赖jar包 <dependency> <g......

杨健-YJ
25分钟前
2
0
ES的性能优化

我们在很多场景下会用到ES帮助我们解决搜索问题,但是很多人了解只是停留在表面,如何深入的使用ES,并做针对性的性能优化呢? 批量提交 当大量的写任务时,可以采用批量提交的方案,但是需要...

春哥大魔王的博客
26分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部