两种定时器的封装
来源:互联网 发布:股票配资子账户软件 编辑:程序博客网 时间:2024/06/11 09:50
GitHub:https://github.com/LearnMoreAndBetter/RMTimerDemo
# RMTimerDemo
定时器封装
本项目中对两种定时器进行了封装,dispatch_source_t和NSTimer
关于这两个定时器,还是有点区别的:
使用NSTimer常常会不准时,因为它被添加到RunLoop,而RunLoop要处理的事情比较多,包括source,timer,observer,所以时间上总是偏差也是正常.
那么如果对时间要求比较严格的话,可以使用GCD定时器代替.因为GCD定时器不受RunLoop影响.
dispatch_source_t精度很高,系统自动触发,系统级别的源。
RMTimer : GCD定时器
调用方法
/**
定时器
@param duration 持续时间
@param interval 间隔时间
@param handleBlock 倒计时的Block处理
@param timeOutBlock 倒计时结束block处理
*/
- (void)resumeTimerWithDuration:(NSInteger)duration
interval:(NSInteger)interval
handleBlock:(void(^)(NSInteger currentTime))handleBlock
timeOutBlock:(void(^)())timeOutBlock;
RMCommonTimer : NSTimer定时器
调用方法
/**
倒计时的Block处理
*/
@property (copy, nonatomic)RMHandleBlock handleBlock;
/**
倒计时结束block处理
*/
@property (copy, nonatomic)RMTimeOutBlock timeoutBlock;
/**
定时器
@param duration 持续时间
@param interval 间隔时间
*/
- (void)resumeTimerWithDuration:(NSInteger)duration
interval:(NSInteger)interval;
VC
FirstVC和ThirdVC中使用的是GCD定时器,SecondVC中使用的是NSTimer定时器,可以看一下效果,还是有一点变化的,SecondVC会等待一个interval页面才发生改变,当然这一点页面是可以做一点调整的,比如在调用前就重设一下button。
FirstVC和ThirdVC,前者返回上一页再次进入,倒计时依旧进行,后者是一个新的页面
这是因为在VC中加了点东西:
//懒加载形式,保持每次进入的都是相同的VC,以保证VC中修改的都是同一个button
- (FirstVC *)firstVC{
if (!_firstVC) {
_firstVC = [[FirstVC alloc]init];
}
return _firstVC;
}
- 两种定时器的封装
- js的两种定时器
- Spring 的两种定时器
- 封装的定时器类
- 封装的定时器类
- 定时器类的封装
- spring学习系列 -- 定时器三 两种定时器的比较
- spring学习系列 -- 定时器三 两种定时器的比较
- spring学习系列 -- 定时器三 两种定时器的比较
- 两种spring的定时器的实现
- Spring定时器的两种实现方式
- Spring定时器的两种实现方式
- Spring定时器的两种实现方式
- spring定时器的两种实现方式
- Spring定时器的两种实现方式
- Spring定时器的两种实现方式
- Spring定时器的两种实现方式
- Spring定时器的两种实现方式
- opengles实现场景控制
- PHOTOSHOP批处理图片大小
- vnc远程连接linux安装oracle数据库!
- GO接口详解
- java 集合Set
- 两种定时器的封装
- 数字图像处理的研究方法
- 详解设计模式——观察者模式
- Android日记一
- 数据库审计+审计内容+操作的跟踪记录+审计的类型
- apache solr 5.0 安装部署+JAVA 调用
- 详解设计模式——策略模式
- 50. Pow(x, n)
- 使用BeanUtils复制Bean属性