我使用GCDWebServer创建一个简单的服务器,用户可以从文档中下载文件,从我显示UIAlertView的按钮,其中有iphone的IP地址,然后单击我为服务器加注星标,问题出现在服务器UI被阻止,uialertview不会被解雇。
这是我的代码
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];
}
错误在哪里?
答案 0 :(得分:3)
不要使用-runWithPort:
因为它会阻止线程。此方法仅应在Mac命令行工具上使用。
创建服务器后,只需致电-start
即可。这不会阻止当前线程,但会在后台启动服务器。然后你可以使用Xcode调试器找出挂起UI后发生的事情(很可能正在执行的当前函数没有返回)。