gpt4 book ai didi

ios - 在允许运行循环继续的同时延迟的正确方法

转载 作者:可可西里 更新时间:2023-11-01 04:21:33 27 4
gpt4 key购买 nike

我需要延迟一定时间,同时允许同一运行循环中的其他事物继续运行。我一直在使用以下代码来执行此操作:

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];

这似乎完全符合我的要求,除了有时函数会立即返回而无需等待所需的时间(1 秒)。

谁能告诉我是什么原因造成的?在允许运行循环运行时等待的正确方法是什么?

注意:我想以类似于 sleep() 的方式进行延迟,以便在延迟之后我回到与之前相同的执行流中。

最佳答案

你应该为此使用 GCD 和 dispatch_after。它更新更高效(线程安全等等),而且非常易于使用。

Xcode 中甚至嵌入了一个代码片段,因此如果您开始输入 dispatch_after,它会建议该片段,如果您验证它,则会在您的代码中为您编写准备好的 2-3 行:)

Code Snippet suggestion by Xcode

int64_t delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
<#code to be executed on the main queue after delay#>
});

关于ios - 在允许运行循环继续的同时延迟的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12865614/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com