目标C为循环延迟

Asd*_*bal 5 for-loop objective-c delay cocos2d-iphone grand-central-dispatch

我有一个for循环,我希望在迭代之间添加延迟.我已将waitUntilDone更改为YES并获得相同的结果.我的数组中只有两个数字,并且在五秒后调用它们而不是:

0s - 没有5s - Block叫10s-Block叫

for(NSNumber* transaction in gainsArray) {

    double delayInSeconds = 5.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {

        NSLog(@"Block");

        [self performSelectorOnMainThread:@selector(private_addTransactionToBankroll:)
        withObject:transaction waitUntilDone:NO];

    });
}

2015-06-16 20:11:06.485 TestApp[97027:6251126] Block
2015-06-16 20:11:06.485 TestApp[97027:6251127] Block
Run Code Online (Sandbox Code Playgroud)

如果重要的话,我正在使用Cocos2d

zap*_*aph 8

for循环将立即分派另一个,因此它们实际上将在同一时间延迟。
而是为每个设置不同的增加延迟:

double delayInSeconds = 0.0;
for(NSNumber* transaction in gainsArray)
{
    delayInSeconds += 5.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void)
                   {
                       NSLog(@"Block");
                       [self performSelectorOnMainThread:@selector(private_addTransactionToBankroll:)
                                              withObject:transaction
                                           waitUntilDone:NO];

                });
}
Run Code Online (Sandbox Code Playgroud)