我使用GCDWebServer创建一个简单的服务器,用户可以从文档中下载文件,从一个按钮我显示一个UIAlertView,那里有iphone的IP地址,然后点击我启动服务器,问题是在服务器启动后UI被阻止,users视图不会被忽略。
这是我的代码
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];}
错误在哪里?
发布于 2014-03-23 11:15:30
不要使用-runWithPort:,因为它会阻塞线程。此方法只能在Mac命令行工具上使用。
只需在创建服务器后调用-start即可。这不会阻塞当前线程,而是在后台启动服务器。然后,您可以使用Xcode调试器找出挂起UI的后续操作(最有可能是当前正在执行的函数没有返回)。
https://stackoverflow.com/questions/19857242
复制相似问题