问题描述
一个会说 Swift 和 Xojo 的人的问题......
由于 Xojo 中的 shell 对象可以同步和异步运行,那么 Swift Process() 如何以相同的方式运行?
使用 Xojo,我可以运行 shell 并在从正在运行的进程接收到数据时做出相应的响应,从而不会在长时间的进程中锁定 UI。
使用 Swift 我只知道如何运行 Process() 并一次性处理结果数据。
任何熟悉 Swift Process() 的人都可以向我提供任何见解吗?
解决方法
在 swift 中,您可以异步运行调度队列中的进程。
DispatchQueue.main.async {
// your task here
}
DispatchQueue.global(qos: .userInitiated).async {
// your task here
}
DispatchQueue.global(qos: .background).async {
// your task here
}
在您的情况下,我建议您在 GitHub 上搜索 swift “shell” 包。
如果您不想使用包,您会在搜索 DispatchQueue async 时找到很多示例。
最好的开始:
https://www.hackingwithswift.com/read/9/4/back-to-the-main-thread-dispatchqueuemain