当前位置: 首页 > 编程日记 > 正文

09-dispatch_source

dispatch_source

是BSD系内核惯有的kqueue的包装,kqueue 是XNU内核中发生各种事件时,在应用程序编程中执行处理的技术。

CPU 负荷非常小,尽量不占用资源。

dispatch_queue 和dispatch_source

dispatch_source 是可以取消的,取消也是有对应的回调的。

dispatch source的种类

名称内容
DISPATCH_SOURCE_TYPE_READ可读取文件映像
DISPATCH_SOURCE_TYPE_PROC检测到与进程相关的事件
DISPATCH_SOURCE_TYPE_SIGNAL接收信号
DISPATCH_SOURCE_TYPE_TIMER定时器
DISPATCH_SOURCE_TYPE_VNODE文件系统有变更
DISPATCH_SOURCE_TYPE_WRITE可写入文件映像
DISPATCH_SOURCE_TYPE_DATA_ADD变量增加
DISPATCH_SOURCE_TYPE_DATA_OR变量or
DISPATCH_SOURCE_TYPE_MACH_SENDMACH 端口发送
DISPATCH_SOURCE_TYPE_MACH_RECVMACH 端口接收

定时器示例

    // 创建定时器dispatch_source_t timer =  dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());// 设置定时器dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 2.0 * NSEC_PER_SEC, 0);// 定时器处理dispatch_source_set_event_handler(timer, ^{NSLog(@"log一下子");// 定时器取消// dispatch_source_cancel(timer)});// 取消的回调dispatch_source_set_cancel_handler(timer, ^{NSLog(@"定时器取消了");});

验证码倒计时
如果说定时器不执行,那么就把timer 设置成全局的变量

{

dispatch_source_t goods_timer;

}

    __block int timeout= 59; //倒计时时间dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行dispatch_source_set_event_handler(_timer, ^{if(timeout<=0){ //倒计时结束,关闭dispatch_source_cancel(_timer);dispatch_async(dispatch_get_main_queue(), ^{//设置界面的按钮显示 根据自己需求设置[self->_verifyBtn setTitle:@"获取验证码" forState:UIControlStateNormal];self->_verifyBtn.userInteractionEnabled = YES;});}else{int seconds = timeout % 60;NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds];dispatch_async(dispatch_get_main_queue(), ^{//设置界面的按钮显示 根据自己需求设置[self->_verifyBtn setTitle:[NSString stringWithFormat:@"%@秒重发",strTime] forState:UIControlStateNormal];self->_verifyBtn.userInteractionEnabled = NO;});timeout--;}});dispatch_resume(_timer);

相关文章:

如何获取boss直聘搜索牛人被屏蔽的姓名

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 玩玩boss直聘。”最近在用boss直聘&#xff0c;活跃度估计蛮高的。在使用牛人搜索的时候&#xff0c;却遇到了一个问题&#xff0c;就是搜出的牛人姓名是被屏蔽的&#xff0c;让我很是焦虑&#xff0c;虽然知道这种设计是直聘推广…

【Python之路】第二篇--初识Python

Python简介 Python可以应用于众多领域&#xff0c;如&#xff1a;数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python&#xff0c;如&#xff1a;Youtube、Dropbox、BT、Quora&#xff08;中国知乎&…

如何实现phpcms v9_4X版本tag的伪静态?

这两个月来写的文章越来越少了&#xff0c;不是懒&#xff0c;因为太忙了--为客户赶做网站。因为客户指定要使用phpcms v9,还要求使用phpcms v9_42版本实现tag伪静态&#xff0c;在接手的时候phpcms v9_42是最新版本&#xff0c;而现在phpcms官方已经发布phpcms v9_5.X了。对于…

OC对象内存布局

OC对象的内存布局 1 每一个实例对象&#xff08;Instance&#xff09;内部都有一个isa指针&#xff0c;指向它的类对象&#xff0c;类对象存放着本对象的实例方法列表和成员变量列表。 2 类对象(Class)内部也有一个isa指针指向元类对象(MetaClass)&#xff0c;元类对象存放的事…

连信的protobuf数据格式

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 连信里用到的protobuf结构。”在看本文之前&#xff0c;可以先进行一下回顾&#xff0c;之前已经对协议的框架进行了整体的介绍&#xff1a;连信协议整体框架看了后结合自己的分析过程&#xff0c;应该有个初步的了解。后续会陆续…

fileupload控件在ajax中无法使用

google得到的方法&#xff1a;1。http://geekswithblogs.net/ranganh/archive/2008/04/01/file-upload-in-updatepanel-asp.net-ajax.aspxThere is a better way of doing it with Ajax Control Toolkit version 3.0.30930 which works with .NET 3.5 SP1 and Visual Studio 20…

Cron表达式的详细用法

字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN-DEC , - * / 星期 1-7 或者 SUN-SAT , - * ? / L C # 年&#xff08;可选&#xff09; 留空, 1970-2099 , - * / 例子&#xff1a;0/5 * * * *…

01-CoreData 概述

CoreData 主要的几个类 1 概述 CoreData 是iOS 3 之后出现的一种数据持久化方案&#xff0c;提供了一种ORM的存储关系&#xff0c;CoreData 是直接将对象存储到数据库中去&#xff0c;也可以将数据库中的数据转化为OC对象&#xff0c;过程中不用编写SQL语句。 2 几个类的讲解…

连信的会话加密密钥协商过程

点击上方↑↑↑蓝字[协议分析与还原]关注我们 “ 介绍连信会话加密密钥的协商过程。” 公号内之前已经对协议的框架和协议内的数据格式进行了介绍&#xff0c;有需要可以回顾下&#xff1a; 连信协议整体框架 连信的protobuf数据格式 本文对连信的会话加密密钥协商过程进行介绍…

6、UmbracoNewsSite:添加新闻分类

上一篇做了一个简单的首页&#xff0c;在导航条上添加了几个新闻板块&#xff0c;接下来我们就添加这几个新闻板块的页面。 开始我们还是需要创建Document Types用来展示新闻列表。我们先做好规划&#xff0c;新闻列表只需要把新闻标题和图片展示出来就可以了&#xff0c;。  …

02-CoreData 的增删改查

CoreData 的增删改查 基本的增删改查的操作 1 数据库的创建 - (void)createDB {// 1.1 创建路径NSURL *modelURL [[NSBundle mainBundle] URLForResource:"AT_CoreDataDemo1" withExtension:"momd"];// 1.2 根据模型文件路径创建模型对象NSManagedObje…

Lemon开源OA

http://www.mossle.com/index.html 转载于:https://www.cnblogs.com/gzmg/p/3770882.html

UC浏览器代理流量解密

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 解密uc浏览器的安全代理流量&#xff0c;看看是不是真安全。”作为一个从上古网络时代过来的人&#xff0c;一定对UC浏览器有深刻印象&#xff0c;它的流量透明代理功能&#xff0c;就是现在的云加速功能&#xff0c;使用UC的服务…

JAVA07 接口与继承

一 动手实验&#xff1a;继承条件下的构造方法调用 1&#xff09;源代码 1 public class TestInherits {2 3 public static void main(String[] args) {4 // TODO Auto-generated method stub5 6 Child c new Child();7 }8 9 } 10 11 class GrandPa…

学习-现代交换原理与通信技术

帮助学习细化。。。 首先&#xff0c;这书真是难读&#xff0c;像个词典嘛似乎《现代交换原理与通信技术》卞佳丽 北邮 呵呵 呵了个呵 不过词典也有词典的好处 第三章&#xff0c;数字程控电话交换与通信网络 1. 控制子系统 与 话路子系统 前者在于控制&#xff0c;后者在于数…

03-NSPredicate谓词

NSPredicate 谓词 在查询数据的过程中&#xff0c;给NSFetchRequest设置一个过滤条件&#xff0c;不需要讲所有的托管对象加载到内存中去。这样的话就会节省内存和加快查找速度。 一 运算符 1 比较运算符 、< 、 、> 、< 、! 比如说age>80 NSPredicate *pre […

小兵别嚣张,签名算法分析

点击上方↑↑↑蓝字[协议分析与还原]关注我们“分析unity3d游戏小兵别嚣张的签名算法。”不久前&#xff0c;写了个unity3d的引子&#xff0c;介绍了使用工具从unity3d游戏中提取出各种资源和算法&#xff1a;unity3d游戏IL2CPP相关算法简单分析不过内容很少&#xff0c;今天介…

NOIP模拟题——B

【题目描述】我们要从n种食物选m个出来&#xff0c;安排一个顺序吃掉它&#xff08;们&#xff09;&#xff0c;每种食物有个美味值ai&#xff0c;然后我们有k个规则&#xff0c;每个规则有 xi, yi 和 ci三个数&#xff0c;如果吃完第xi种食物接下来马上吃第yi种食物&#xff0…

Maven使用常用命令

> mvn clean删除target文件夹> mvn clean test编译测试代码&#xff0c;默认被放到target/test-classes文件夹下面> mvn clean compile编译主代码&#xff0c;并放到target/classes文件夹下> mvn clean package打包代码&#xff0c;我们可以看到target文件下生成了…

04- CoreData轻量级版本的迁移

CoreData版本的迁移 一 轻量级的数据迁移 例如添加新的实体&#xff0c;新的实体属性。 轻量级版本迁移方案非常简单&#xff0c;大多数迁移工作都是由系统完成的&#xff0c;只需要告诉系统迁移方式即可。在持久化存储协调器(PSC)初始化对应的持久化存储(NSPersistentStore…

通da信TCP长连接数据算法分析

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 分析通da信TCP长连接内部分数据的算法。”作为一款老牌的炒股软件&#xff0c;通da信里面的数据是相当的丰富&#xff0c;免费的也很丰富&#xff0c;准确性也很好&#xff0c;例如&#xff0c;这种股票之间关联的信息。通da信一…

产品经理怎么样用图表传达数据信息(多图)

上文有点仓促了&#xff0c;结尾没有写好。补上&#xff1a; 对劣质成本分析的时候应该注意&#xff1a; 1、在进行劣质成本分析的时候&#xff0c;要注意区分成本和必要的浪费。要注意一个关系&#xff0c;对必要浪费的控制会导致其他成本的上升。例如前文说到四小时送一次货&…

'This NSPersistentStoreCoordinator has no persistent stores 报错

可能是你改变coredata的属性项之后再运行的话在模拟器中会出现这个问题。找上面说的&#xff0c;找到mac下的模拟器中的程序路径&#xff0c;然后删掉其sqlite文件再运行就好了&#xff01;&#xff01;&#xff01;

tcp断开连接,4次握手,为什么wireshark 只能抓到3个包?

用wireshark 抓包&#xff0c;看看tcp 断开连接的过程. 以前书上说tcp断开连接&#xff0c;4次握手&#xff0c;可我为什么wireshark 只能抓到3个包&#xff1f; 百度一下&#xff0c;别人也有类似的疑问。 【求助】书上和网上的资料说&#xff0c;TCP拆除连接需要四次握手。但…

如何在python开发的GUI界面程序中恰当地使用PyExecJS

点击上方↑↑↑蓝字[协议分析与还原]关注我们“解决一闪而过的黑框的小技巧。”在使用python开发过程中&#xff0c;不可避免地&#xff0c;会开发带界面的应用&#xff0c;也会经常使用js来完成一些功能&#xff0c;比如&#xff0c;我使用python开发个了一个小应用&#xff1…

switch和case的理解

下面是复习java基础知识的时候&#xff0c;发现的一些点&#xff0c;总结下&#xff0c;备忘 int a345;switch (a) {case 23:System.out.println("23"); // break;case 345://条件符合&#xff0c;下面的case条件不会在判断&#xff0c;直接执行&#xff1b;System…

05-自己创建mapmodel自定义迁移方式

自动创建Mapping 如果模型的改变很大或者不支持轻量级数据迁移的条件&#xff0c;则我们需要进行自定义迁移。 使用映射模型 适用于更加复杂的数据的迁移 NSMappingModel 类似于数据模型 NSEntityMapping 告知迁移过程如何在目标数据存储中处理源实体的映射。 映射类型决…

Linux内核之内存管理(4)--缺页处理程序

本文主要解说缺页处理程序&#xff0c;凝视足够具体&#xff0c;不再解释。 //以下函数将一页内存页面映射到指定线性地址处&#xff0c;它返回页面的物理地址 //把一物理内存页面映射到线性地址空间指定处或者说把线性地址空间指定地址address处的页面映射到主内存区页面page上…

WebSocket协议分析

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 解析websocket数据格式。”好久不见&#xff0c;一晃一年又过去了&#xff0c;祝大家新年好运。今天&#xff0c;给大家分析一个常见的协议——WebSocket&#xff0c;这是一个标准协议&#xff0c;虽然没有HTTP历史悠久&#xff…

《postfix邮件服务下mailq、postmap、postqueue 、 postsuper等用法》

1、Mailq 功能说明&#xff1a;显示待寄邮件的清单。 语  法&#xff1a;mailq [-q] 补充说明&#xff1a;mailq可列出待寄邮件的清单&#xff0c;包括邮件ID&#xff0c;邮件大小&#xff0c;邮件保存时间&#xff0c;寄信人&#xff0c;收信人&#xff0c;以及邮件无法寄出…