在项目开发中,会对数据库数据进行更新操作的接口请求,不仅服务器侧需要控制请求频率以及保证数据的唯一性和一致性,app侧也需要进行限制来避免测试垃圾数据
常用的方案有
1、限制按钮的点击频率: 针对注册类接口的时间间隔timeInterval可设置长些,推荐0.5s 2、新增标志对单个接口进行请求频率的控制
/**
控制接口的请求标志
*/
@property (assign, nonatomic) BOOL IsreqingGetCurrentSysUser;
在这里插入图片描述
原理:利用runtime API 对UIControl方法sendAction:to:forEvent:
进行方法实现的交换,来控制事件的响应频率
SEL selA = @selector(sendAction:to:forEvent:);
如果按钮的事件处理采用添加UITapGestureRecognizer 手势的实现的,同理也是可以类似地进行Method Swizzling实现响应频率的限制
UITapGestureRecognizer *cutTap = [[UITapGestureRecognizer alloc] init];
[[cutTap rac_gestureSignal] subscribeNext:^(id x) {
NSLog(@" cutTap 点击了 ");
if ( self.models.block) {
self.models.block(self.models);
}
}];
[self addGestureRecognizer:cutTap];
倒计时巧妙地使用performSelector:withObject:afterDelay:
实现
[self performSelector:@selector(resetState) withObject:nil afterDelay:self.timeInterval];//
在这里插入图片描述
本文案例是采用分类的形式,你可以选择自定义控件的方式进行实现
头文件
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有