-(void)startTime{
__block int timeout=30; //倒计时时间
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(), ^{
//设置界面的按钮显示 根据自己需求设置
[l_timeButton setTitle:@"发送验证码" forState:UIControlStateNormal];
l_timeButton.userInteractionEnabled = YES;
});
}else{
// int minutes = timeout / 60;
int seconds = timeout % 60;
NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds];
dispatch_async(dispatch_get_main_queue(), ^{
//设置界面的按钮显示 根据自己需求设置
NSLog(@"____%@",strTime);
[l_timeButton setTitle:[NSString stringWithFormat:@"%@秒后重新发送",strTime] forState:UIControlStateNormal];
l_timeButton.userInteractionEnabled = NO;
});
timeout--;
}
});
dispatch_resume(_timer);
}
分享到:
相关推荐
今天给大家介绍一个GCD实现倒计时功能,源码GCDForTime,使用GCD机制来实现倒计时功能。Demo实现的是类似注册页面发送验证码的倒计时。
采用GCD的方式来写的,因为GCD这种方式的倒计时要比NStimer的精准的多
来源:github/GCDForTimeLicence:Custom作者:__西海岸 使用GCD机制来实现倒计时功能。Demo实现的是类似注册页面发送验证码的倒计时。 小编注:感谢开发者@__西海岸 。
GCD异步获取图片
GCD 源码分析.pdf
二进制gcd算法,为算法导论后面的思考题
GCD最大公约数int main() { int a,b; int c; while(cin>>a>>b) { c=gcd(a,b); cout; } return 0; }
gcd的基础方法使用,线程和队列的使用 gcd的基础方法使用,线程和队列的使用
gcd多核编程
GCD的一些高级用法,是不容错过的多线程开发学习材料
1.iOS多核任务,比NSThead更易用的异步方法 2.展示了如何停止一个GCD方法
iOS GCD timer 计时器 自己封装直接使用即可 GCD实现的计时器解决timer内存不好管理问题。
Behavioral GCD in Verilog,用于对两个数求最大公约数
创建最常用的除数计算器;。。。GCD计算器允许您快速查找一组数字的最大公约数;。。。当两个数的最大公约数为1时,这两个数称为互质或相对素数。
GCD的示例源码,使用串行队列实现简单的预加载
Grand Central Dispatch (GCD)是异步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统级中实现。由于线程管理是作为系统的一部分来实现的,因此可统一管理,也可执行任务,这样就比以前的线程更...
葵花宝典之GCD常用和不常用API说明和Demo演示,让你轻松不费脑力的理解GCD的应用场景和操作姿势
上传代码中是GCD使用的一些基础和延伸的方法,对于了解GCD的用法,很有帮助。
大恒GCD-0401M电动台控制器 用户使用手册 Ver1.0(中文版)
iOS GCD 开发教程 完整版 有需要的同学看看 iOS GCD 开发教程 完整版 有需要的同学看看 iOS GCD 开发教程 完整版 有需要的同学看看