博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现两次点击超过0.5s之后执行某方法(不使用定时器)
阅读量:6114 次
发布时间:2019-06-21

本文共 958 字,大约阅读时间需要 3 分钟。

我们遇到了一个需求是这样的:

用户连续点击某按钮,每点击一次数量增加一个,当两次点击之间的时间间隔超过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]];//上报服务器}

你可以觉得我是投机取巧,但是,只要实现了功能,并且节省代码,性能也不错,不是挺好的吗?

欢迎各位小伙伴们批评指正。

转载地址:http://cdjka.baihongyu.com/

你可能感兴趣的文章
会计基础_001
查看>>
Cordova 开发环境搭建及创建第一个app
查看>>
ajax请求拿到多条数据拼接显示在页面中
查看>>
小程序: 查看正在写的页面
查看>>
dedecms生成文档数据库崩溃 mysql daemon failed to start
查看>>
Linux的50个基本命令
查看>>
Objective-C中创建单例方法的步骤
查看>>
[转]无法安装MVC3,一直卡在vs10-kb2483190
查看>>
Codeforces 520B:Two Buttons(思维,好题)
查看>>
web框架-(二)Django基础
查看>>
Jenkins持续集成环境部署
查看>>
emoji等表情符号存mysql的方法
查看>>
Excel到R中的日期转换
查看>>
检查磁盘利用率并且定期发送告警邮件
查看>>
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
linux文本模式和文本替换功能
查看>>
Windows SFTP 的安装
查看>>
摄像机与绕任意轴旋转
查看>>
rsync 服务器配置过程
查看>>
预处理、const与sizeof相关面试题
查看>>