2017-04-05 56 views
0

已经编写了一种更新方法,当我们开始该活动时,它会一次又一次地自行调用,如下所述。一旦我们得到一个输出,我想停止这个方法函数(现在,即使我们得到输出,它也会继续运行)。请让我知道是否有可能做到这一点。连续自动刷新一种方法

-(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]; 
}); 
} 

回答

0

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

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

谢谢,它与您的概念一起工作。 –

-1

您可以使用计时器这里

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

一旦你与你的重复执行完成,然后做这个

[timer invalidate]; 
timer = nil; 
+0

问题的整点是如何认识到,执行应该停止 - 你有没有解决这一点 – Russell

+0

你必须使用 [定时器无效]。 timer = nil; 停止执行,即它在你手中何时停止执行。因此,你知道什么时候会停止 –

+0

感谢您的评论,我知道它现在正在工作! –