利用CFAbsoluteTimeGetCurrent()计算时间差
开发中,遇到计算时间差的问题,利用CFAbsoluteTimeGetCurrent()可以很方便的进行计算
实例:
场景:类似购物车中修改商品数量的功能,如下图所示,要求,修改完的数量,要同步到服务器。

分析:如果点击“+”或者“-”,立即进行服务器同步的话,代价貌似有些高,所以采用延时提交的方法:“连续”点击的时候,不提交到服务器,点击停止,进行同步。这个项目中,“连续”点击的判断,采用的是判断两次点击的时间差,如果时间差小于一定的数值(本例中,这个数值是2),那么即可判定是连续点击的操作。代码如下:
- (void) editCount {
double diff = ;
if (_startTime == ) {//开始的时候,将_startTime和_endTime设置初始化为0
_startTime = CFAbsoluteTimeGetCurrent();
_endTime = _startTime;
}
else {
_endTime = CFAbsoluteTimeGetCurrent();
diff = _endTime - _startTime;
_startTime = _endTime;
}
NSLog(@"start = %lf,end = %lf,diff = %lf",_startTime,_endTime,diff);
NSString * testStr = @"just for test";
if (diff < ) {//是连续点击,取消同步到服务器
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(willUpdateServerCartWithCount:) object:testStr];
}
//开启一个新的延时执行
[self performSelector:@selector(willUpdateServerCartWithCount:) withObject:testStr afterDelay:];
}
注意:cancelPreviousPerformRequestsWithTarget:selector:object:方法和performSelector:withObject:afterDelay:方法中,object参数需要保值一直,前者才能起作用,如上述代码中,object参数都是"just for test"。
利用CFAbsoluteTimeGetCurrent()计算时间差的更多相关文章
- 利用sklearn计算文本相似性
利用sklearn计算文本相似性,并将文本之间的相似度矩阵保存到文件当中.这里提取文本TF-IDF特征值进行文本的相似性计算. #!/usr/bin/python # -*- coding: utf- ...
- Android计算时间差
想要写个根据消耗时长来确定开始结束时间的小工具,发现Android处理时间上有点累,可能是我没找到合适的方法吧,先把我的解决办法贴出来,有好的解决方法还希望提醒一下: 1.根据时间字符串获取毫秒数 p ...
- 【转载】c/c++在windows下获取时间和计算时间差的几种方法总结
一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t time ...
- C#计算时间差值
/// <summary> /// 计算时间差值 /// </summary> /// <param name="DateTime1">< ...
- 登录超时自动退出,计算时间差-b
// 此方法适用于所有被创建过的controller,且当前controller生命周期存在,如有错误的地方望大神斧正 // 说一下我们的需求和实现原理,需求:在点击home键退出但没有滑飞它,5分 ...
- python分页和session和计算时间差
分页 #!/usr/bin/env python # -*- coding:utf-8 -*- class Pagenation: def __init__(self,current_page,all ...
- js计算时间差,包括计算,天,时,分,秒
收集两个计算时间差的计算方法代码片段: var date1=new Date(); //开始时间 var date2=new Date(); //结束时间 var date3=date2.getTim ...
- Android中计算时间差的实现方法
今天为“至简天气”增加了一项功能:在启动时根据上次更新数据的时间判断是否有必要更新数据,因为 weather.com.cn 的实况数据貌似是25分钟才会刷新一次,只有在据上次更新的时间达25分钟以上才 ...
- datetime 计算时间差
计算时间差: .date() # 格式化 .timedelta() # 时间差 import datetime # 今天 today = datetime.datetime ...
随机推荐
- python delete数据
#!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/11/24 0:27 # @Author : lijunjiang # @Fil ...
- centos6.6部署mysql mmm高可用架构
一.环境简述 1.工作逻辑图 2.MySQL-MMM优缺点 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性. 缺点:Monitor节点是 ...
- Google Chrome默认字体设置(Win)
宋体·新宋体·仿宋字体.rar 下载地址:http://pan.baidu.com/s/1nt0l8FZ 或者:http://yunpan.cn/Qzv3UTTngbsID
- [BZOJ1082][SCOI2005]栅栏 二分+搜索减枝
1082: [SCOI2005]栅栏 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2430 Solved: 1034[Submit][Status ...
- 程序员利用javascript代码开发捕鱼游戏
面试这么成功,全靠这个捕鱼游戏来完成,看的就是里面javascript代码,所以说前端最重要的还是javascript这一关,不管是现在HTML5时代还是以后如何,javascript永远不会落后,大 ...
- Netty源码学习(七)FastThreadLocal
0. FastThreadLocal简介 如同注释中所说:A special variant of ThreadLocal that yields higher access performance ...
- 微信小程序实现豆瓣读书
个人练习项目,使用了scss+webstorm watcher来处理样式.整体上没有什么难点. github:https://github.com/axel10/wx-douban-read
- centos 部署web项目
Linux下安装Tomcat服务器和部署Web应用 一.上传Tomcat服务器
- uva11107(后缀数组)
uva11107 题意 输入 n 个 DNA 序列,求出长度最大的字符串,使得它在超过一半的 DNA 序列中连续出现.如果有多解,按字典序输出. 分析 论文 后缀数组经典题.加深几个关键数组的印象. ...
- [LOJ6279]数列分块入门 3
题目大意: 给你一个长度为$n(n\leq100000)$的序列$A$,支持进行以下两种操作: 1.将区间$[l,r]$中所有数加上$c$: 2.询问区间$[l,r]$中,严格小于$c$的最大数.思路 ...