



























你给的代码由于 sleep(10)卡住主线程了,导致 10 秒后才能打印 updateUI 。
因为 palyground 没有 runloop 环境,你要想实现 2 秒后打印的效果,可以这样写
import Foundation
import PlaygroundSupport // 关键导入
// 让 Playground 持续运行,不自动结束
PlaygroundPage.current.needsIndefiniteExecution = true
DispatchQueue.global().async {
// 耗时操作(如网络请求、文件处理)
let data = downloadData()
DispatchQueue.main.async {
updateUI(with: data)
}
}
func downloadData() -> String {
sleep(2)
return "a"
}
func updateUI(with: Any) {
print("updateUI")
}
// 不需要 sleep(10),Playground 会保持运行
其中 PlaygroundPage.current.needsIndefiniteExecution = true 这一句话可以让 palyground 开启 runloop 环境,避免了主线程使用 sleep 卡住线程
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。