作为请求处理程序的结果更新 UI

Updating UI as the result of a request handler

我有这样的设置;

startup() {
    ...
    self.gcdWebServer.addHandlerForMethod("GET", path: "/hide", 
        requestClass: GCDWebServerRequest.self, asyncProcessBlock: {request in self.hide()})
    ...
}

func hide() -> GCDWebServerDataResponse {
    self.view.hidden = true;
    print("hide")
    return GCDWebServerDataResponse(statusCode: 200)
}

当向 /hide 发出请求时,控制台会立即显示 print() 调用,但视图不会因任意延迟而消失,大约在 10-30 秒之间。

如何让请求立即导致视图被隐藏?

在 dispatch async 中包装你 UI 相关的登录并 运行 它在主线程上:

dispatch_async(dispatch_get_main_queue(),{

    self.view.hidden = true;

 })

试试这个,在主线程上调用隐藏。

dispatch_async(dispatch_get_main_queue(),{
   self.view.hidden = true;
})

重写您的 hide 方法如下。 您只需要在主线程上更新 UI。

func hide() -> GCDWebServerDataResponse {
    dispatch_async(dispatch_get_main_queue(),{
        self.view.hidden = true
    })
    print("hide")
    return GCDWebServerDataResponse(statusCode: 200)
}

UI 仅在主线程中更新代码。

 dispatch_async(dispatch_get_main_queue(),{

        self.view.hidden = true;

     })