这是我需要做的:

就像是:

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线程等待/阻塞。

谢谢

最佳答案

您可以使用NSThreadsleepForTimeInterval方法。以下代码将阻止正在运行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/

10-10 21:11