美文网首页iOS开发Tips
iOS-及时搜索的三种优化方法(为减轻服务器的压力)

iOS-及时搜索的三种优化方法(为减轻服务器的压力)

作者: Simple_Code | 来源:发表于2018-07-10 10:15 被阅读231次

条条道路通罗马、选择一条宽敞的大道、前进

方法一:一般的方法

@interface XXX
@property (nonatomic, assign) NSInteger inputCount;  //用户输入次数,用来控制延迟搜索请求
@end 

- (void)inputBarTextViewDidChange:(HPGrowingTextView *)textView hasInputText:(NSString *)text {
    // 用户停止输入1秒后进行提示内容匹配搜索
    self.inputCount ++;
    [self performSelector:@selector(requestKeyWorld:) withObject:@(self.inputCount) afterDelay:1.0f];
}

- (void)requestKeyWorld:(NSNumber *)count {
    if (self.inputCount == [count integerValue]) {
        //说明用户停止输入超过了一秒,发起网络请求
        [self.searchOperation cancel];
        //执行网络请求
        self.searchOperation = [HTTP XXX];
    }
}

方法二: 使用ReactiveCocoa进行优化了解RAC的可以看一下

参数说明:
throttle: //若一段时间后没有新信号就执行最后这个信号
distinctUntilChanged:  //处理解决相同值没必要多次被订阅
ignore: //忽略空值

[[[[self.textField.rac_textSignal throttle:2] distinctUntilChanged] ignore:@""] subscribeNext:^(id x) {
            NSLog(@"%@",x);
        }];

方法三:1秒内取消延迟、1秒后执行延迟

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    
    // 一次取消所有的延迟执行
    [NSObject cancelPreviousPerformRequestsWithTarget:self];
    NSString *subString = textField.text;
    subString = [subString stringByReplacingCharactersInRange:range withString:string];
    
    // 如果1秒内没有没和变化进行延时操作
    [self performSelector:@selector(goSearch:) withObject:subString afterDelay:1.f];
    return YES;
}
afterDelay:1.f];

主要是以下两行代码:

    [NSObject cancelPreviousPerformRequestsWithTarget:self];
    //或者[[self class] cancelPreviousPerformRequestsWithTarget:self(请求的目标) selector:@selector(performSelector所注册过的方法名称) object:nil];
    [self performSelector:@selector(goSearch:) withObject:subString afterDelay:1.f];

相关文章

  • iOS-及时搜索的三种优化方法(为减轻服务器的压力)

    条条道路通罗马、选择一条宽敞的大道、前进 方法一:一般的方法 方法二: 使用ReactiveCocoa进行优化了解...

  • cdnjs

    减轻服务器压力,从里面搜索需要的插件引入即可 https://cdnjs.com/

  • iOS-性能优化深入探究

    iOS-性能优化深入探究 iOS-性能优化深入探究

  • 减轻压力的方法

    每个人都要面对压力,它基本可以分为两种:一种是好的,能使人振奋,促使肾上腺激素快速上升,让人处于一种应急状态,从而...

  • 享受精油的香气,缓解情绪压力

    当工作和生活变得艰难和枯燥时,很容易感到压力和疲惫。用精油是减轻压力的有效方法。减轻压力的方法有很多,即使你只有短...

  • 精油缓解情绪压力

    享受精油的香气 当工作和生活变得艰难和枯燥时,很容易感到压力和疲惫。用精油是减轻压力的有效方法。减轻压力的方法有很...

  • AcWing 166. 数独(搜索)

    深度优先搜索 原题链接 优化非常重要,在这题里更是如此 常见的优化技巧(本题前三种都有使用) 优化搜索顺序 排除冗...

  • 开发感悟

    1. 前端验证和后端验证是两码事。前端验证只是优化用户的体验,减少不合规格的数据,减轻服务器的压力,跟安全性毫无关...

  • 轻松理解防抖和节流

    防抖和节流在前端应用非常多,如搜索框,查询等操作,如何减少一些无效的操作,减轻服务器的压力,如一些持续发生的事件,...

  • 如何在Django应用程序中使用Redis缓存

    如何在Django应用程序中使用Redis缓存 减轻服务器压力的方法之一是缓存数据。这是通过在数据被处理后缓存数据...

网友评论

    本文标题:iOS-及时搜索的三种优化方法(为减轻服务器的压力)

    本文链接:https://www.haomeiwen.com/subject/ywqfpftx.html