据此做了一些简易封装
1.调用方法
if ([CommonTool selectorIntervalExecution:message.name Time:1 StoreName:@"wkwebVCCommand"] == NO) {
return;
}
2.需要在didFinishLaunchingWithOptions 调用
//避免可能出现的bug
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"wkwebVCCommand"];
3.方法
/**
间隔时间内不允许执行多次同任务名的方法
@param seleceorName 不允许的方法名
@param time 间隔时间
@param storeName 存储名字 (存储名字不能相同)
*/
+(BOOL)selectorIntervalExecution:(NSString *)seleceorName Time:(NSInteger)time StoreName:(NSString*)storeName;
4.实现
+ (NSTimeInterval)pleaseInsertEndTime:(NSDate *)endTime{
NSDate* startDate = [NSDate date];
NSTimeInterval time = [startDate timeIntervalSinceDate: endTime];
return time;
}
+ (BOOL)selectorIntervalExecution:(NSString *)seleceorName Time:(NSInteger)time StoreName:(NSString*)storeName{
NSArray *strArr = [[NSUserDefaults standardUserDefaults] objectForKey:storeName];
if (strArr) {
//相同方法1秒间隔内 不允许做2次操作
if ([strArr[0] isEqual:seleceorName] && (([self pleaseInsertEndTime:strArr[1] ]<=time ))) {
return NO;;
}
[[NSUserDefaults standardUserDefaults] setObject:@[seleceorName,[NSDate date]] forKey:storeName];
}else{
[[NSUserDefaults standardUserDefaults] setObject:@[seleceorName,[NSDate date]] forKey:storeName];
}
return YES;
}
5,说明 根据点击的方法存入 当前方法名 时间 key名
然后调用时读取 优点简单 方便
缺点 有io读取操作 移除[NSUserDefaults standardUserDefaults] 时候会被移除
网友评论