例如高频率点击一个按钮或者TableViewCell,会造成功能多次重复执行,在异步网络请求时候或者多线程时候,造成的问题尤其明显。

解决方法:

声明一个属性self.actionWorking ,标识是否有任务在执行,如果有就返回,如果没有就self.actionWorking= YES;然后通过

- (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay;

来执行目标操作,执行之后,self.actionWorking = NO;

例如:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

if (self.actionWorking)

{

return;

}

self.actionWorking = YES;

[self performSelector:@selector(someAction:) withObject:nil  afterDelay:0.5];

return;

}

-(void)someAction:(NSObject*)object{

// do some working

self.actionWorking = NO;

}

最新文章

  1. 01 java开发前小知识
  2. QuickHit快速击键小程序 --S2.4.5
  3. ios 引入第三方库 运行时找不到函数实现
  4. 【leetcode】Course Schedule(middle)☆
  5. 通过Ajax——异步获取相关问题解答
  6. java中DriverManager跟DataSource获取getConnection有什么不同?
  7. asp.net中下载文件的问题
  8. java 小结2 多态问题和容器介绍
  9. visual studio 2015 企业版 序列号及官方下载地址
  10. IBinder对象在进程间传递的形式(一)
  11. TP-Link路由器的设置
  12. vue---checkbox,获取选中的值
  13. R语言学习网址
  14. Mina简单的入门示例
  15. 【javascript】script标签的async异步解析
  16. Java中实现多线程继承Thread类与实现Runnable接口的区别
  17. 区分重载(overload),覆盖(Override)和隐藏(hide)
  18. 使用 MtVerify.h头文件 ,用的时候把他头文件的内容添加到项目
  19. Simple2D-18(音乐播放器)使用 bass 音频库
  20. 7 个 Bootstrap 在线编辑器用于快速开发响应式网站

热门文章

  1. java - String 浅谈
  2. Linux VPS使用百度网盘API上传备份文件
  3. 【转】.Net中通过反射技术的应用----插件程序的开发入门
  4. Windows Phone 之播放视频
  5. angularJs 页面筛选标签小功能
  6. Js 获取 本周、本月起始时间
  7. Django国际化注意事项
  8. OC语言-03NSString
  9. 运行从别处复制过来的linux可执行程序
  10. Keras如何构造简单的CNN网络