ios 利用延迟执行来过滤一些重复操作

    在集成JSbridge 的时候,遇到一些的奇怪的场景,前端调用本地方法的时候会回调方法多次,原因不明确,可能是多次注册了jsbridge的方法。在前端没法解决问题的情况下,原生怎么解决一个方法被回调很多次的情况呢?

答案是利用延迟执行,首先定义一个NSTimer 来模拟一个重复事件:

self.timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(repeatDoSomeThing) userInfo:nil repeats:YES];

  每0.1秒重复执行一个方法。下面是延迟执行的方法:

-(void)repeatDoSomeThing{
    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(startDoSomeThing) object:nil];
    [self performSelector:@selector(startDoSomeThing) withObject:nil afterDelay:0.2];
}

 每次先取消延迟执行,在延迟0.2秒执行,这样重复的操作就会被过滤只剩最后一个执行,当然这里的延迟时间要大于重复事件的时间间隔。

代码demo:

https://github.com/ThirdPrince/ios_filter_-duplicate_events

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值