79 lines
2.3 KiB
Objective-C
79 lines
2.3 KiB
Objective-C
//
|
|
// NSTimer+Convenience.m
|
|
// ISCTest
|
|
//
|
|
// Created by imac on 16/3/23.
|
|
// Copyright © 2016年 xiang. All rights reserved.
|
|
//
|
|
|
|
#import "NSTimer+Convenience.h"
|
|
|
|
@implementation NSTimer (Convenience)
|
|
|
|
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval
|
|
repeats:(BOOL)repeats
|
|
callback:(LXVoidBlock)callback {
|
|
return [NSTimer scheduledTimerWithTimeInterval:interval
|
|
target:self
|
|
selector:@selector(onTimerUpdateBlock:)
|
|
userInfo:[callback copy]
|
|
repeats:repeats];
|
|
}
|
|
|
|
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval
|
|
count:(NSInteger)count
|
|
callback:(LXVoidBlock)callback {
|
|
NSDictionary *userInfo = @{@"callback" : [callback copy],
|
|
@"count" : @(count)};
|
|
return [NSTimer scheduledTimerWithTimeInterval:interval
|
|
target:self
|
|
selector:@selector(onTimerUpdateCountBlock:)
|
|
userInfo:userInfo
|
|
repeats:YES];
|
|
}
|
|
|
|
+ (void)onTimerUpdateBlock:(NSTimer *)timer {
|
|
LXVoidBlock block = timer.userInfo;
|
|
|
|
if (block) {
|
|
block();
|
|
}
|
|
}
|
|
|
|
+ (void)onTimerUpdateCountBlock:(NSTimer *)timer {
|
|
static NSUInteger currentCount = 0;
|
|
|
|
NSDictionary *userInfo = timer.userInfo;
|
|
LXVoidBlock callback = userInfo[@"callback"];
|
|
NSNumber *count = userInfo[@"count"];
|
|
|
|
if (count.integerValue <= 0) {
|
|
if (callback) {
|
|
callback();
|
|
}
|
|
} else {
|
|
if (currentCount < count.integerValue) {
|
|
currentCount++;
|
|
if (callback) {
|
|
callback();
|
|
}
|
|
} else {
|
|
currentCount = 0;
|
|
|
|
[timer unfireTimer];
|
|
[timer invalidate];
|
|
timer = nil;
|
|
}
|
|
}
|
|
}
|
|
|
|
- (void)fireTimer {
|
|
[self setFireDate:[NSDate distantPast]];
|
|
}
|
|
|
|
- (void)unfireTimer {
|
|
[self setFireDate:[NSDate distantFuture]];
|
|
}
|
|
|
|
@end
|