假设我想稍后执行一段代码,所以我这样调用dispatch_after
:
double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
/* code */
});
但是如果我想在执行开始之前“暂停”我的程序怎么办?假设我希望在此次通话后1秒暂停程序,以获取未知时间。然后暂停后,我想恢复等待队列的2秒钟。所以它看起来像这样:
有没有办法做到这一点?或者我应该使用其他方法吗?
我知道dispatch_suspend
和dispatch_resume
存在,但它们并不适合我(或者我只是不知道如何正确使用它们)。
解决方案不一定要涉及一个块,它也可能是对指定函数的延迟回调。关键是我希望能够暂停等待时间直到执行。
答案 0 :(得分:1)
你无法做到这一点,但有一种方法可以做类似的事情。
延迟你的方法2秒:
[self performSelector:@selector(yourMethod) withObject:nil afterDelay:2.0];
1秒后,取消您的方法:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(yourMethod) object:nil];
在一段未知的时间之后,回想一下您的方法并延迟一秒钟后执行它:
[self performSelector:@selector(yourMethod) withObject:nil afterDelay:1.0];
答案 1 :(得分:0)
将您的块放入方法
-(void)myMethod{
//implementation of the block
}
你要调用块但是在它之前延迟2秒,
致电
[self performSelector:@selector(myMethod) withObject:nil afterDelay:2.0];
希望这有帮助