在 macOS/Cocoa 应用程序中启动 GCDWebServer 会冻结应用程序

Posted

技术标签:

【中文标题】在 macOS/Cocoa 应用程序中启动 GCDWebServer 会冻结应用程序【英文标题】:Starting a GCDWebServer in a macOS/Cocoa app freezes the app 【发布时间】:2019-03-29 21:15:41 【问题描述】:

当我从 macOS/Cocoa 应用程序(不是命令行)启动一个简单的 GCDWebServer 服务器时,应用程序会冻结(“应用程序无响应”+ 沙滩球)。

在 AppDelegate:applicationDidFinishLaunching 方法中:

let webServer = GCDWebServer()

webServer.addHandler(forMethod: "GET", path: "/hello", request: GCDWebServerRequest.self)  request -> GCDWebServerResponse? in
    print(request)
    return GCDWebServerDataResponse(html:"<html><body><p>Hello World</p></body></html>")


webServer.run(withPort: 8080, bonjourName: "Hello World Web Server")

print("Visit \(webServer.serverURL) in your web browser")

【问题讨论】:

【参考方案1】:

不要使用webServer.run() API:它不会返回并且是为命令行工具设计的。请改用start()

【讨论】:

以上是关于在 macOS/Cocoa 应用程序中启动 GCDWebServer 会冻结应用程序的主要内容,如果未能解决你的问题,请参考以下文章

使用 PDFOutline 在 Swift/Cocoa 中将 TOC 添加到 PDFDocument

iOS:将 GCD 与 Core Data 结合使用

汇编中的 GCD 程序不显示 gcd 的输出

在 GCD 块中绘制图像时卡顿

gcd曲线可以说明啥

GCD 浅析