Отладчик делает паузу в методе scheduleReadStream ASIHTTPRequest, но не выдает ошибок.
Более конкретно, он останавливается на этой строке:
[[self readStream] scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:[self runLoopMode]];
Независимо от того, сколько раз я нажимаю на игру, она не выходит за пределы этой строки и не сообщает о каких-либо ошибках в консоли. Однако я заметил, что основной поток продвигается через некоторые из своих операций, когда я нажимаю кнопку play.
Как я настраиваю вещи, у меня есть загрузчик, который работает в фоновом потоке (поэтому он может выполнять синтаксический анализ и манипулирование изображениями, когда он получает его от выполненных запросов). Этот объект загрузчика использует ASINetworkQueue
для планирования запросов. Мне интересно, может быть, это вызывает тупик.
Вот фрагмент кода, который добавляет запросы в очередь после анализа некоторых данных из только что завершенного запроса (не являющегося частью очереди).
- (void)requestFinished:(ASIHTTPRequest *)request
{
dispatch_async(serialQueue, ^{
NSData *responseData = [request responseData];
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:responseData];
[parser setDelegate:self];
if ([parser parse]) {
//Add pending operations
for (NSNumber * key in self.currentRequests.keyEnumerator) {
//Unrelated code getting the request from a dictionary
[self.networkQueue addOperation:request];
}
[self.networkQueue go];
}
});
}
Обратите внимание, что я также делаю несвязанные запросы по всему коду в асинхронном режиме, что может происходить одновременно с заполнением / указанием этой очереди.