我使用NSTimer scheduledTimerWithTimeInterval
延遲函數調用,但我也需要一個完成事件。出於某種原因,我在規格中找不到任何提及。NSTimer scheduledTimerWithTimeInterval完成事件
我有什麼選擇?
我使用NSTimer scheduledTimerWithTimeInterval
延遲函數調用,但我也需要一個完成事件。出於某種原因,我在規格中找不到任何提及。NSTimer scheduledTimerWithTimeInterval完成事件
我有什麼選擇?
我不知道我是否正確地得到了答案。在調用選擇器之後,通過調用選擇器
[NSTimer scheduledTimerWithTimeInterval:10f
target:self
selector:@selector(onFire)
userInfo:nil
repeats:NO];
只需在調用方法的底部調用完成方法就足夠了。這不符合你的要求嗎?
- (void)onFire {
// DO THE JOB.
// ...
[self onCompletion];
}
- (void)onCompletion {}
這不是'[self onCompletion];'而不是'onCompletion();'? – rmaddy 2014-09-23 22:18:25
@rmaddy糟糕,今天Java太多:) – lambruscoAcido 2014-09-23 22:23:05
不好。我需要這個像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#>
});
這應該可以讓您輕鬆延遲一些嵌套塊。
你需要說明你在找什麼。也許你應該發佈你的相關代碼並解釋你所需要的不同。 – rmaddy 2014-09-23 22:13:13
@rmaddy不要成爲一個瘋狂的人。我需要一個附加到計時器上的完成事件。有什麼比這更簡單的? – user3077725 2014-09-23 22:23:30
定時器每次定時器觸發時都會調用一個方法(如果不重複,則爲一次)。所以你提出的問題沒有任何意義,因爲它已經打了電話。你還需要什麼? – rmaddy 2014-09-23 22:33:00