2013-11-08 5 views
0

Я использую GCDWebServer для создания простого сервера, на котором пользователи могут загружать файл из документа, с помощью кнопки Я показываю UIAlertView, где есть IP-адрес iphone, затем по щелчку Я запускаю сервер, проблема есть ли после запуска сервера UI заблокирован, uialertview не уволен.GCDWebServer Основная нить и UI

Это мой код

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]; 

}

где ошибка?

ответ

2

Не используйте -runWithPort:, так как он заблокирует нить. Этот метод следует использовать только в инструментах командной строки Mac.

Просто позвоните -start после создания сервера. Это не будет блокировать текущий поток, но запустите сервер в фоновом режиме. Затем вы можете использовать отладчик Xcode, чтобы узнать, что происходит потом, зависает пользовательский интерфейс (скорее всего, текущая выполняемая функция не возвращается).

Смежные вопросы