2017-04-05 55 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

感謝您的評論,我知道它現在正在工作! –