• 利用CFAbsoluteTimeGetCurrent()计算时间差


    开发中,遇到计算时间差的问题,利用CFAbsoluteTimeGetCurrent()可以很方便的进行计算

    实例:

    场景:类似购物车中修改商品数量的功能,如下图所示,要求,修改完的数量,要同步到服务器。

    分析:如果点击“+”或者“-”,立即进行服务器同步的话,代价貌似有些高,所以采用延时提交的方法:“连续”点击的时候,不提交到服务器,点击停止,进行同步。这个项目中,“连续”点击的判断,采用的是判断两次点击的时间差,如果时间差小于一定的数值(本例中,这个数值是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"。

     

  • 相关阅读:
    python有哪些关键字?让他自己“吐”出来!
    jquery获取表单元素与回显
    前端开发笔记--flex布局
    Vue-Quill-Editor回显不显示空格的处理办法
    react项目中antd组件库的使用需要注意的问题
    React Native 列表的总结
    是时候了解React Native了
    Android 整合实现简单易用、功能强大的RecyclerView
    linux centos 一键安装环境
    推翻自己和过往,重学自定义View
  • 原文地址:https://www.cnblogs.com/benbenzhu/p/3918206.html
Copyright © 2020-2023  润新知