NSTimer scheduledTimerWithTimeInterval完成事件

问题描述:

我使用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

我不知道我是否正确地得到了答案。在调用选择器之后,通过调用选择器

[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

我有点不清楚为什么其他答案不符合你的喜好,但这里是另一种方法。

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#> 
}); 

这应该可以让您轻松延迟一些嵌套块。