0
我想限制一個方法可以被調用的頻率。 我的目的是限制我處理API回調的速度。 (當我希望它們時,某些API回調不會停止)。最佳限制方法調用率,一個方法的頻率可以調用
我有一個工作解決方案,請提供一個更清潔的解決方案。
請提供更好的解決方案。
-(void)callbackRateLimited:(id)someDataProvided {
static NSDate *date;
static NSUInteger count;
if (!date) {
date = [NSDate new];
count = 0;
}
double duration = fabs([date timeIntervalSinceNow]);
NSLog(@"Duration :%f count:%lu",duration,count);
if (count == 0) {
NSLog(@"No waiting... processing API");
[self processAPICallback];
count++;
return;
}
if (duration < 10.0f) { // 10 seconds
NSLog(@"waiting.... too fast slow down");
return;
}
NSLog(@"reset waiting state");
//count = 0; not required here.
date = nil;
}
請注意,您最終可能會錯過一些更改。你需要的東西說,「嘿!一個回調被壓制,如果我們沒有看到N mess內的回調,然後繼續,並啓動任何可能還沒有處理的變化。」這可以通過多種方式完成,其中會有不同程度的不一致性。 – bbum