这是我需要做的:
就像是:
for int i = 0; i < 3; i++)
call method @selector(spin) with delay 0.1
//once this is done (e.g., in 0.3 seconds)
call method @selector(move) with delay 1 second.
我需要的是堆放事件,并让其他事件相对于上一个事件结束时开始。
所以像:
wait 100ms //total time = 100ms
spin
wait 100ms //total time = 200ms
spin
wait 100ms //total time = 300ms
spin
wait 1000ms //total time = 1300ms
move
dispatch_after可能会发生这种情况吗?如果可以,可以给我一个例子吗?对于这种情况,我似乎找不到一个。
注意,这些都不应该导致UI线程等待/阻塞。
谢谢
最佳答案
您可以使用NSThread
的sleepForTimeInterval
方法。以下代码将阻止正在运行sleepForTimeInterval
的线程。
dispatch_queue_t yourThread = dispatch_queue_create("com.xxx.queue", nil);
dispatch_async(yourThread, ^
{
[NSThread sleepForTimeInterval:10.0];
dispatch_async(dispatch_get_main_queue(), ^
{
});
});
这应该为您指明正确的方向。
关于ios - 使用dispatch_after来完成其他事情,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22107447/