利用CFAbsoluteTimeGetCurrent()计算时间差
2014-08-17 20:14
204 查看
开发中,遇到计算时间差的问题,利用CFAbsoluteTimeGetCurrent()可以很方便的进行计算
实例:
场景:类似购物车中修改商品数量的功能,如下图所示,要求,修改完的数量,要同步到服务器。
分析:如果点击“+”或者“-”,立即进行服务器同步的话,代价貌似有些高,所以采用延时提交的方法:“连续”点击的时候,不提交到服务器,点击停止,进行同步。这个项目中,“连续”点击的判断,采用的是判断两次点击的时间差,如果时间差小于一定的数值(本例中,这个数值是2),那么即可判定是连续点击的操作。代码如下:
注意:cancelPreviousPerformRequestsWithTarget:selector:object:方法和performSelector:withObject:afterDelay:方法中,object参数需要保值一直,前者才能起作用,如上述代码中,object参数都是"just for test"。
实例:
场景:类似购物车中修改商品数量的功能,如下图所示,要求,修改完的数量,要同步到服务器。
分析:如果点击“+”或者“-”,立即进行服务器同步的话,代价貌似有些高,所以采用延时提交的方法:“连续”点击的时候,不提交到服务器,点击停止,进行同步。这个项目中,“连续”点击的判断,采用的是判断两次点击的时间差,如果时间差小于一定的数值(本例中,这个数值是2),那么即可判定是连续点击的操作。代码如下:
- (void) editCount { double diff = 0; if (_startTime == 0) {//开始的时候,将_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 < 2) {//是连续点击,取消同步到服务器 [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(willUpdateServerCartWithCount:) object:testStr]; } //开启一个新的延时执行 [self performSelector:@selector(willUpdateServerCartWithCount:) withObject:testStr afterDelay:2]; }
注意:cancelPreviousPerformRequestsWithTarget:selector:object:方法和performSelector:withObject:afterDelay:方法中,object参数需要保值一直,前者才能起作用,如上述代码中,object参数都是"just for test"。
相关文章推荐
- CFAbsoluteTimeGetCurrent 时间间隔的快速计算
- 应用中获得时间差 CFAbsoluteTimeGetCurrent
- ios-CFAbsoluteTimeGetCurrent和CACurrentMediaTime以及NSDate
- 利用System.currentTimeMillis()方法计算程序运行时间
- UIScrollView_滚动视图以及CFAbsoluteTimeGetCurrent
- 调试函数耗时的利器CFAbsoluteTimeGetCurrent
- NSDate 、CFAbsoluteTimeGetCurrent、CACurrentMediaTime 的区别
- CACurrentMediaTime , CFAbsoluteTimeGetCurrent, NSDate 区别
- 调试函数耗时的利器CFAbsoluteTimeGetCurrent
- NSDateFormatter优化以及测试方法CFAbsoluteTimeGetCurrent()
- 调试函数耗时的利器CFAbsoluteTimeGetCurrent
- 调试函数耗时的利器CFAbsoluteTimeGetCurrent
- 调试函数耗时的利器CFAbsoluteTimeGetCurrent
- CFAbsoluteTimeGetCurrent
- NSDate 、CFAbsoluteTimeGetCurrent、CACurrentMediaTime 的区别
- 调试函数耗时的利器CFAbsoluteTimeGetCurrent
- System.currentTimeMillis()计算方式与时间的单位转换
- System.currentTimeMillis()计算方式与时间的单位转换
- System.currentTimeMillis()计算方式与时间的单位转换
- CTime::GetCurrentTime();获取当前时间