0

我使用 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];

}

错误在哪里?

4

1 回答 1

4

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

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

于 2014-03-23T03:15:29.520 回答