我有一个简单的iOS应用程序,需要在运行之前延迟某段代码。
我正在使用dispatch_time方法来实现这一点并且它非常好用。但是只有一个问题,dispatch_time接受一个整数,所以你可以设置的时间只允许是整数,如1.0秒或3.0秒等等。
我想将其设置为延迟0.5秒。我怎样才能做到这一点?以下是我的代码:
int64_t time_delay = 1.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, time_delay * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void) {
/*
my block of code....
*/
});
答案 0 :(得分:2)
请勿使用int64_t
,而应使用CGFloat
。它会正常工作。
CGFloat time_delay = 0.5f;
答案 1 :(得分:1)
dispatch_time()需要纳秒作为第二个参数。从第二个参数中删除NSEC_PER_SEC,延迟将以纳秒为单位
答案 2 :(得分:0)
double delay = 2.25;
// 2250000000 = 2.25 * 1000000000
dispatch_time_t offset_time = delay * NSEC_PER_SEC;
// current mach_absolute_time + offset
dispatch_time_t fire_time = dispatch_time(DISPATCH_TIME_NOW, offset_time);
// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2.25), dispatch_get_main_queue(), ^{
dispatch_after(fire_time, dispatch_get_main_queue(), ^{
NSLog(@"time %llu", t);
});