项目介绍:
目的
使用系统原生的NSTimer来执行定时任务时会造成内存泄漏(闭环),同时在滑动ScrollView时,定时器并没起做用的bug
使用说明
Github地址:https://github.com/liuchongfaye/NSTimerInprovement
简书:
https://www.jianshu.com/p/a59fea810694
CSDN:https://mp.csdn.net/postedit/81509985
用法
NSTimerInprovement是基于组件化开发的思想写的一个小型第三方库,并且可支持Cocoapods,使用NSTimerInprovement,你完全没有必要管理NSTimer的声明周期,只需要将按照以下方法来使用就可以了:
方法1:
// 类似于 target-action
self.timerInprovement = [NSTimerInprovement ns_timerWithTimeInterval:1.0 target:self selector:@selector(timerFire:) userInfo:nil repeats:YES];
方法2:
self.timerInprovement = [NSTimerInprovement ns_scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFire:) userInfo:nil repeats:YES];
方法3:
// 仅支持 iOS 10.0 以上的系统
__weak typeof(self) weakSelf = self;
self.timerInprovement = [NSTimerInprovement ns_timerWithTimeInterval:1.0 repeats:YES block:^(NSTimer *timer) {
[weakSelf timerFire:timer];
}];
方法4:
// 仅支持 iOS 10.0 以上的系统
__weak typeof(self) weakSelf = self;
self.timerInprovement = [NSTimerInprovement ns_scheduledTimerWithTimeInterval:1.0 repeats:YES block:^(NSTimer *timer) {
[weakSelf timerFire:timer];
}];
方法5:
NSDate *date = [[NSDate date] dateByAddingTimeInterval:10.0];
self.timerInprovement = [NSTimerInprovement ns_scheduledTimerWithFireDate:date interval:1.0 target:self selector:@selector(timerFire:) userInfo:nil repeats:YES];
方法6:
// 仅支持 iOS 10.0 以上的系统
NSDate *date = [[NSDate date] dateByAddingTimeInterval:10.0];
self.timerInprovement = [NSTimerInprovement ns_scheduledTimerWithFireDate:date interval:1.0 repeats:YES block:^(NSTimer *timer) {
[weakSelf timerFire:timer];
}];
其中,方法1到方法6在NSTimer的官方文档当中都有相对应的方法,大家可以看看