2

次のように、メイン キューにブロックをエンキューする 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 ...
      }
  }

最初のブロックのみが実行されます。ループが適切に機能していること、適切な回数ループしており、例外やエラーが発生していないことを確認しました。

4

1 に答える 1

6

このコードで:

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 呼び出しの最後まで。

于 2012-06-01T23:03:32.907 に答える