在没有阻止UI的情况下在For循环中添加延迟

Oak*_*Oak 2 objective-c delay delayed-execution ios

在我的UI中,当点击一个按钮时,它会调用一个for循环,顺序执行几个任务.

// For Loop
for (int i = 1; i <= 3; i++)
{
    // Perform Task[i]
}
// Results:
// Task 1
// Task 2
// Task 3
Run Code Online (Sandbox Code Playgroud)

在完成每项任务后,我想添加一个用户定义的延迟.例如:

// For Loop
for (int i = 1; i <= 3; i++)
{
    // Perform Task[i]
    // Add Delay Here
}

// Results:
//
// Task 1
// Delay 2.5 seconds
//
// Task 2
// Delay 3 seconds
//
// Task 3
// Delay 2 seconds
Run Code Online (Sandbox Code Playgroud)

在iOS中,使用Objective-C,有一种方法可以在for循环中添加这样的延迟,请记住:

  1. 用户界面应保持响应.
  2. 必须按顺序执行任务.

for循环上下文中的代码示例将是最有帮助的.谢谢.

kat*_*000 5

使用GCD dispatch_after.您可以在stackoverflow上搜索其用法.好文章在这里

Swift中的简短示例延迟1.5秒:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(Double(NSEC_PER_SEC) * 1.5)), dispatch_get_main_queue()) {
     // your code here after 1.5 delay - pay attention it will be executed on the main thread
}
Run Code Online (Sandbox Code Playgroud)

和目标c:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^ {
    // your code here after 1.5 delay - pay attention it will be executed on the main thread
});
Run Code Online (Sandbox Code Playgroud)