Swift Process() 和 Xojo Shell

问题描述

一个会说 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