实现两次点击超过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]];
//上报服务器
}

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,929评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,818评论 19 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,912评论 6 13
  • 自从有了自己的孩子,总是希望孩子能获得最好的。就像我希望能把最好的给到我的孩子,我打算在这里写文章,也是为了将我觉...
    wingsofsky阅读 1,778评论 1 1
  • 图文/刘小牙 马丁说:“什么时候你不再盲目跟风,那证明了你的成长,什么时候你不再不顾一切的强求,那就见证了自己的成...
    少女哪吒刘懒懒阅读 4,149评论 7 11

友情链接更多精彩内容