NSURLConnection и NSTIMER выпуск - PullRequest
       29

NSURLConnection и NSTIMER выпуск

1 голос
/ 11 августа 2011

В настоящее время я пытаюсь получить время из 20 секунд при выполнении асинхронного запроса.

Проблема в том, что NSURLconnection выполняется в основном потоке и, следовательно, если я запускаю NSTIMER для подсчетаколичество секунд, которое прошло, он никогда не запускает селектор, так как NSURLconnection блокирует основной поток.Я, вероятно, могу запустить NSURLconnection в другом потоке, так как он безопасен для потока, но у меня есть странные проблемы с тем, что мои делегаты не вызывают и т. Д. Любая помощь приветствуется.

Ниже приведен мой фрагмент:

    NSURL *requestURL = [NSURL URLWithString:SERVER];
    NSMutableURLRequest *req = [[[NSMutableURLRequest alloc] initWithURL:requestURL] autorelease];
    theConnection = [[NSURLConnection alloc]initWithRequest:req delegate:self];


if (!timeoutTimer) {
    NSLog(@"Create timer");
    timeoutTimer = [NSTimer scheduledTimerWithTimeInterval:TIMEOUT target:self selector:@selector(cancelURLConnection) userInfo:nil repeats:YES];

}

Ответы [ 2 ]

2 голосов
/ 11 августа 2011

Асинхронные методы NSURLConnection do not блокируют основной поток.Если ваш таймер не срабатывает, у этого есть другие причины.Ваши проблемы с его использованием в фоновом потоке связаны с тем, что в фоновом потоке по умолчанию нет цикла выполнения.

0 голосов
/ 11 августа 2011

Этот является отличным руководством о том, как настроить простую операцию NSO для запуска метода в отдельном потоке. Я бы начал с этого, основываясь на том, что вы упомянули. Надеюсь, это поможет!

...