【问题标题】:Automatic refreshing one method continuously自动连续刷新一种方法
【发布时间】:2017-08-30 12:58:18
【问题描述】:

编写了一个更新方法,当我们启动该活动时,它会一次又一次地调用自己,如下所述。一旦我们得到输出,我想停止这个方法函数(现在,即使我们得到输出,它也会继续运行)。如果有可能,请告诉我。

-(void)reloadMethod{
[self downloadProgressAudio];
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    [self reloadMethod];
});
 } 

【问题讨论】:

    标签: ios objective-c methods refresh


    【解决方案1】:

    你可以在这里使用计时器

    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0
            target:self
            selector:@selector(reloadMethod)
            userInfo:nil
            repeats:YES];
    

    完成重复执行后,请执行此操作

    [timer invalidate];
    timer = nil;
    

    【讨论】:

    • 问题的重点是如何识别应该停止执行 - 而您还没有解决这一点
    • 你已经使用了[timer invalidate];计时器=无;停止执行,即何时停止执行由您掌握。因此,您知道它什么时候停止
    • 感谢您的 cmets,我知道了,现在可以使用了!
    【解决方案2】:

    如果您需要继续调用此方法直到获得输出,则需要包含该测试,并且只有在没有任何输出时才再次调用该函数。

    if !outputDataExists {
        dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
            [self reloadMethod];
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多