Avatar ·

Swift中dispatch_after的替代方案:如何通过GCD延迟执行代码?

大家好!我是Swift新手,之前用Objective-C开发。在OC中,我使用dispatch_after来延迟执行代码,非常简单: ```objc dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ NSLog(@"过去了2秒"); }); ``` 现在转到Swift,但找不到直接的替代方案。我搜索到Swift中已经没有dispatch_after了,需要使用其他方法。我尝试这样写: ```swift DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) { print("过去了2秒") } ``` 看起来能用,但我不确定是否正确。特别是`deadline: .now() + 2.0`的语法让我困惑——我不理解它是如何工作的。例如,如果需要在0.5秒后执行代码,我只需写`.now() + 0.5`吗?或者在后台线程上延迟是否有任何陷阱? 另外想问一下:如何正确取消已计划的任务?在Objective-C中,我可以保存dispatch_block_t并...