使用GCD实现倒计时
2015-12-07 13:59
218 查看
__blockNSInteger timeout =
300;
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*SEC_PER_MSEC,0);//每秒执行
dispatch_source_set_event_handler(_timer, ^{
if (timeout <=0) {
dispatch_source_cancel(_timer);
//dispatch_release(_timer);
dispatch_async(dispatch_get_main_queue(), ^{
//设置界面的按钮显示
});
}
else
{
NSInteger minutes = timeout/60;
NSInteger seconds = timeout%60;
NSString *strTime = [NSStringstringWithFormat:@"%d分%d秒后重新获取验证码",minutes,seconds];
dispatch_async(dispatch_get_main_queue(), ^{
//设置界面的按钮显示
});
timeout--;
}
});
dispatch_resume(_timer);
300;
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*SEC_PER_MSEC,0);//每秒执行
dispatch_source_set_event_handler(_timer, ^{
if (timeout <=0) {
dispatch_source_cancel(_timer);
//dispatch_release(_timer);
dispatch_async(dispatch_get_main_queue(), ^{
//设置界面的按钮显示
});
}
else
{
NSInteger minutes = timeout/60;
NSInteger seconds = timeout%60;
NSString *strTime = [NSStringstringWithFormat:@"%d分%d秒后重新获取验证码",minutes,seconds];
dispatch_async(dispatch_get_main_queue(), ^{
//设置界面的按钮显示
});
timeout--;
}
});
dispatch_resume(_timer);
相关文章推荐
- PHP中Push(推送)技术,可拥有微信、站内通知等
- Some lines about EF Code First migration.
- 智能车学习(十四)——舵机学习
- 从今天开始—兄弟连IT教育
- java泛型程序设计——定义简单泛型类+泛型方法
- 音频、视频播放时属性、事件等操作
- UIImageView-播放序列图(简单的动画效果实现)
- 重定向跳出父Frame
- android之进度条
- JDBC连接数据库中CallableStatement执行有参存储过程及注解其他
- c++ std::bind 基本用法
- 软件工程学概述
- JDK的下载地址
- Linux 下Can的配置
- git删除分支
- Linux 网络通信之广播
- LeetCode - 3Sum Closest
- vs 生成pdb调试
- 【Android学习之道】 图片手势放大
- 改变自己—兄弟连IT教育