我有一个for循环将块排队到主队列上,如下所示:

  for (int x=0; x<5; x++) {
    double delayInSeconds = x * .03;
      dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
      dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        ... code here ...
      }
  }

仅第一个块被执行。我已经验证了循环工作正常,正在循环正确的次数,并且没有引发异常或错误。

最佳答案

使用此代码:

for (int x=0; x<5; x++) {
    double delayInSeconds = x * .03;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        NSLog(@"Blah!!");
    });
}

“Blah”被注销5次。我猜您发布的代码与应用程序中的代码不同?我必须添加);到dispatch_after调用的末尾。

关于objective-c - 串行分派(dispatch)队列中的块未执行-GCD iOS Objective-C,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10857910/

10-11 19:42