2014-09-23 143 views
0

我使用NSTimer scheduledTimerWithTimeInterval延遲函數調用,但我也需要一個完成事件。出於某種原因,我在規格中找不到任何提及。NSTimer scheduledTimerWithTimeInterval完成事件

我有什麼選擇?

+1

你需要說明你在找什麼。也許你應該發佈你的相關代碼並解釋你所需要的不同。 – rmaddy 2014-09-23 22:13:13

+0

@rmaddy不要成爲一個瘋狂的人。我需要一個附加到計時器上的完成事件。有什麼比這更簡單的? – user3077725 2014-09-23 22:23:30

+1

定時器每次定時器觸發時都會調用一個方法(如果不重複,則爲一次)。所以你提出的問題沒有任何意義,因爲它已經打了電話。你還需要什麼? – rmaddy 2014-09-23 22:33:00

回答

1

我不知道我是否正確地得到了答案。在調用選擇器之後,通過調用選擇器

[NSTimer scheduledTimerWithTimeInterval:10f 
           target:self 
           selector:@selector(onFire) 
           userInfo:nil 
           repeats:NO]; 

只需在調用方法的底部調用完成方法就足夠了。這不符合你的要求嗎?

- (void)onFire { 
    // DO THE JOB. 
    // ... 
    [self onCompletion]; 
} 

- (void)onCompletion {} 
+0

這不是'[self onCompletion];'而不是'onCompletion();'? – rmaddy 2014-09-23 22:18:25

+0

@rmaddy糟糕,今天Java太多:) – lambruscoAcido 2014-09-23 22:23:05

+0

不好。我需要這個像C#中的匿名方法,這樣我可以嵌套一些代碼。 – user3077725 2014-09-23 22:25:13

0

我有點不清楚爲什麼其他答案不符合你的喜好,但這裏是另一種方法。

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(<#delayInSeconds#> * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    <#code to be executed after a specified delay#> 
}); 

這應該可以讓您輕鬆延遲一些嵌套塊。