1. 声明dispatch_source_t

@property (nonatomic, strong) dispatch_source_t source;

这里必须强引用,否则计时器无法启动。

2. 定义dispatch_source_t

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_source_t source = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
self.source = source;

3. 设置dispatch_source_t

dispatch_source_set_timer(self.source, DISPATCH_TIME_NOW, NSEC_PER_SEC, 0);
dispatch_source_set_event_handler(self.source, handler);

4. 启动NSTimer

dispatch_resume(self.source);

5. 暂停NSTimer

dispatch_suspend(self.source);

6. 移除NSTimer

dispatch_source_cancel(self.source);

注意

dispatch方法不会强引用dispatch_source_t对象,所以dispatch_source_t对象需被强引用,否则会被销毁,计时器无法执行。

Dispatch Source Timer相关推荐

  1. IOS并发编程指南:Dispatch Queue任务执行与Dispatch Source

    导读: 本文为读<Concurrency Programming Guide>笔记第三篇,在对OS X和iOS应用开发中实现任务异步执行的技术.注意事项.Operation与Dispatc ...

  2. iOS之深入解析dispatch source的原理与功能

    一.dispatch source 和 runLoop source dispatch source 和 runLoop source 都是用来监听事件的,可以创建不同类型的 dispatch sou ...

  3. RxSwift学习插曲--Timer补充内容

    前言 在之前的一篇内容RxSwift学习--核心逻辑初探中,曾列举了一些使用RxSwift优势的小例子,其中关于Timer定时器的例子,在RxSwift中创建的定时器并不受RunLoop的影响,至于为 ...

  4. 我所理解的 iOS 并发编程

    作者:bool周 原文链接:我所理解的 iOS 并发编程 无论在哪个平台,并发编程都是一个让人头疼的问题.庆幸的是,相对于服务端,客户端的并发编程简单了许多.这篇文章主要讲述一些基于 iOS 平台的一 ...

  5. GCD介绍(三): Dispatch Sources

    何为Dispatch Sources 简单来说,dispatch source是一个监视某些类型事件的对象.当这些事件发生时,它自动将一个block放入一个dispatch queue的执行例程中. ...

  6. GCD简介三:Dispatch Sources

    一.何为Dispatch Sources 简单来说,dispatch source是一个监视某些类型事件的对象.当这些事件发生时,它自动将一个block放入一个dispatch queue的执行例程中 ...

  7. iOS开发之三大计时器(Timer、DispatchSourceTimer、CADisplayLink)

    1. 概述 说起计时器,很多开发人员第一时间就会想起Timer,但是随着使用的深入,慢慢就发现Timer不是很精确,随后就有想到GCD Timer,专业点就是DispatchSourceTimer,除 ...

  8. [OC学习笔记]Grand Central Dispatch

    一.GCD概要 (一)什么是GCD 什么是GCD?以下摘自苹果的官方说明. Grand Central Dispatch(GCD)是异步执行任务的技术之一.一般将应用程序中记述的线程管理用的代码在系统 ...

  9. 09-dispatch_source

    dispatch_source 是BSD系内核惯有的kqueue的包装,kqueue 是XNU内核中发生各种事件时,在应用程序编程中执行处理的技术. CPU 负荷非常小,尽量不占用资源. dispat ...

最新文章

  1. IntelliJ IDEA 12 创建Web项目 教程 超详细版
  2. Oracle(order by)
  3. 干掉 Navicat:这个 IDEA 的兄弟真香!
  4. Bit-Z为什么成为熊市之光?
  5. Angular 自定义 structural 指令的一个例子
  6. “鬼才”论文致谢刷屏!感谢我导“似导非导”的指导...
  7. 关于ie浏览器的问题
  8. 使用Flume将日志导入OSS
  9. Python新闻网站项目-7.Django内容后台管理系统管理开发
  10. spring揭秘_理解透彻!Spring中BeanFactory与FactoryBean分析
  11. 奥维互动地图自定义地图
  12. 深入浅出Go Runtime
  13. 表达无序列表语义的html标签是,HTML语义标签的介绍和常用的语义标签
  14. java bitmap api,RoaringBitmap的使用
  15. rrweb学习案例(网页录制,回放)-demo
  16. MacBook Touch Bar(触控栏)无法正常工作的解决方法
  17. 使用 Django 实现私有云盘
  18. 资深行业专家王煜全的演讲:“移动互联网中的产品创新机会”
  19. 基于关联规则的气象服务智能推荐
  20. PS创意合成苹果橘子

热门文章

  1. 中国电信在计算机网络扮演的角色,计算机网络.ppt
  2. 服装ERP——企业资源方案
  3. 知乎好物开通,以及实战攻略干货分享
  4. 精通Midjourney V5:影视相机参数总结 - 电影提示、镜头类型和镜头在电影提示背景下探讨镜头大小和镜头
  5. 苹果悬浮球_苹果iPhone X关闭静音模式振动功能的操作方法_教程_新闻_【生意多】...
  6. 宽带无线路由器原来这么简单
  7. Linux环境下搭建区块链私有链+部署智能合约
  8. 知道等级保护测评都有哪些工作内容吗?
  9. 关于 JS动态生成的 iframe 引入CSS 的踩坑
  10. CSS3 loading效果全