最近在项目中遇到了一个需要延迟执行的需求,出于习惯选择了GCD的dispatch_after这个函数。但由于项目需要某个场景下取消这个处于等待执行中的action, 当时没有找到对应的方法,就换成了performSelector afterDelay 这种方案。
后来查询了一些资料,自己整理了一下。下面是iOS中的几种延迟执行方法以及取消方法。
1、NSTimer
NSTimer 是iOS开发工作中经常会使用到,充当着定时器的作用。NSTimer不会阻塞主线程,只是把action滞后,到指定时间由主线程继续执行。
- 执行NSTimer
self.timer = [NSTimer scheduledTimerWithTimeInterval:3.0f target:self selector:@selector(prtintMyWords:) userInfo:@{@"words":@"hello world"} repeats:NO];
- 取消NSTimer