【发布时间】:2015-06-17 00:19:34
【问题描述】:
我有一个 for 循环,我想在迭代之间添加延迟。我已将 waitUntilDone 更改为 YES 并获得相同的结果。我的数组中只有两个数字,并且都在五秒后调用,而不是:
0s - 没有 5s - 调用块 10s- 块调用
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
如果这很重要,我正在使用 Cocos2d
【问题讨论】:
-
使用
NSTimer也是不错的解决方案。 -
@zaph NSTimer 不能与 cocos2d 或 SpriteKit 一起使用。更喜欢 CCNode 及其所有派生类提供的内置
schedule方法。
标签: objective-c for-loop cocos2d-iphone delay grand-central-dispatch