普通计时器(作为NSTimer)
无需处理isResponseReturned
_looper = [ZCLooper new];
_looper.retryMinTimes = 1;
_looper.repeatTimeSpace = 1;
//repeat in 1 * 1 = 1s
[_looper startLooperWithHandler:^(ZCLooper *looper) {
NSLog(@"hello");
}
[_looper fire];
异步动作计时器(如:网络)
您必须处理属性:isResponseReturned
此属性告诉loop器处理已完成,或者将按最大延迟重复
_looper = [ZCLooper new];
_looper.retryMaxTimes = 20;
_looper.retryMinTimes = 10;
_looper.repeatTimeSpace = 0.5;
//max repeat in 20 * 0.5 = 10s, min in 10 * 0.5 = 5s
[_looper startLooperWithHandler:^(ZCLooper *looper) {
NSURLSession *session...
NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//deal with isResponseReturned
looper.isResponseReturned = YES;
}];
[task resume];
}
[_looper fire];
iOS7+ 和 ARC
通过CocoaPods获得
pod 'ZCLooper'