首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCDWebServer主线程和UI

GCDWebServer主线程和UI
EN

Stack Overflow用户
提问于 2013-11-08 18:51:46
回答 1查看 980关注 0票数 0

我使用GCDWebServer创建一个简单的服务器,用户可以从文档中下载文件,从一个按钮我显示一个UIAlertView,那里有iphone的IP地址,然后点击我启动服务器,问题是在服务器启动后UI被阻止,users视图不会被忽略。

这是我的代码

代码语言:javascript
复制
    if (alertView.tag == 999) {

    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDir = [documentPaths objectAtIndex:0];

    self.webServer = [[GCDWebServer alloc] init];
    [self.webServer addHandlerForBasePath:@"/" localPath:documentsDir indexFilename:nil cacheAge:3600];
    [self.webServer runWithPort:8080];

    // I try this 2 solution but no one work
    //[self starsServer]
    //[self performSelector:@selector(startServer) onThread:[NSThread mainThread]  withObject:nil waitUntilDone:NO];
}

- (void) startServer {

[self.webServer start];

}

错误在哪里?

EN

回答 1

Stack Overflow用户

发布于 2014-03-23 11:15:30

不要使用-runWithPort:,因为它会阻塞线程。此方法只能在Mac命令行工具上使用。

只需在创建服务器后调用-start即可。这不会阻塞当前线程,而是在后台启动服务器。然后,您可以使用Xcode调试器找出挂起UI的后续操作(最有可能是当前正在执行的函数没有返回)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19857242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档