当前位置: 首页 > news >正文

实现两次点击超过0.5s之后执行某方法(不使用定时器)

我们遇到了一个需求是这样的:
用户连续点击某按钮,每点击一次数量增加一个,当两次点击之间的时间间隔超过0.5s的时候,把这次连续点击的个数上报给服务器。
思路一:
使用定时器,当第一次点击的时候,设置定时器为0s,触发定时器,当定时器增加到0.5s并且没有接收到任何点击的时候,停止计时器并上报数据。当下一次点击在0.5s内的时候,把定时器重新设置从0开始计时。
但是,使用定时器容易造成内存泄漏,所以尽量少的使用定时器。
要实现这个需求,不使用定时器也是可以完成的。
思路二:
使用延迟执行方法来实现。当点击的时候取消之前的方法响应,当超过0.5s的时候自动执行上报方法。说起来比较绕,代码实现超简单哟。

//按钮的点击方法
- (IBAction)juziClick:(id)sender {
    self.clickJuziCount++;//点击次数增加
    self.data.credit_num++;//业务相关逻辑
    self.haveJuziCount.text = [NSString stringWithFormat:@"收到了%ld个橘子",self.data.credit_num];//业务相关
//以下两句是关键
    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(addJuziCount) object:nil];
    [self performSelector:@selector(addJuziCount) withObject:nil afterDelay:0.5];
}
//增加橘子数量,上传至服务器
-(void)addJuziCount{
   // NSLog(@"------bbbb----------- %d",self.clickJuziCount);
    [PublicTool showMsg:[NSString stringWithFormat:@"增加了 %d 个橘子",self.clickJuziCount]];
//上报服务器
}

你可以觉得我是投机取巧,但是,只要实现了功能,并且节省代码,性能也不错,不是挺好的吗?
欢迎各位小伙伴们批评指正。

相关文章:

  • 百度分页效果之纯jsp版
  • 腾讯云服务器 Centos6.5 安装 nginx1.12.0
  • mysql 基础
  • 关于抵御Petya勒索病毒的最新办法
  • 销售趋势分析折线图
  • How do we build TiDB
  • hbase region split方式
  • ASP.NET MVC5+EF6+EasyUI 后台管理系统(32)-swfupload多文件上传[附源码]
  • hihocoder 1457(后缀自动机+拓扑排序)
  • Gnocchi+Aodh服务简析
  • 给wordpress导航菜单添加个性图标
  • BZOJ 3170 [Tjoi 2013]松鼠聚会
  • 面向云数据中心的现代数据管理架构
  • 分布式光伏发电及配电网的保护机制探究
  • 光伏组件价格跳水,企业的未来何去何从?
  • [译]如何构建服务器端web组件,为何要构建?
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • ECMAScript入门(七)--Module语法
  • Git初体验
  • java中具有继承关系的类及其对象初始化顺序
  • jdbc就是这么简单
  • React的组件模式
  • Sass Day-01
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • uva 10370 Above Average
  • vue-router的history模式发布配置
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • zookeeper系列(七)实战分布式命名服务
  • Zsh 开发指南(第十四篇 文件读写)
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 高度不固定时垂直居中
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 聊聊redis的数据结构的应用
  • 网络应用优化——时延与带宽
  • 移动端 h5开发相关内容总结(三)
  • nb
  • AI算硅基生命吗,为什么?
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​TypeScript都不会用,也敢说会前端?
  • $NOIp2018$劝退记
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C语言)二分查找 超详细
  • (LeetCode) T14. Longest Common Prefix
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (二十四)Flask之flask-session组件
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)ssm码农论坛 毕业设计 231126
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .NET应用架构设计:原则、模式与实践 目录预览
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • ??javascript里的变量问题