我有这样的设置;
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(dispatch_get_main_queue(),{
self.view.hidden = true;
})
将您与 UI 相关的登录包装在调度异步中并在主线程上运行它:
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;
})