디버거는 ASIHTTPRequest의 scheduleReadStream 메소드 내에서 일시 정지하지만 오류는 발생하지 않습니다.오류없이 ASIHTTPRequest의 scheduleReadStream에서 중지하는 디버거
은 더 구체적으로,이 라인에 중지 것 :
[[self readStream] scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:[self runLoopMode]];
상관없이 내가 플레이를 명중 횟수, 그것은이 라인을 이동하거나 콘솔에서 오류를보고하지 않습니다. 그러나 내가 게임을 할 때 메인 스레드가 몇 가지 작업을 진행한다는 것을 알았습니다.
내가 물건을 설정하는 방법은 백그라운드 스레드에서 작동하는 다운로더를 가지고 있습니다 (완료된 요청에서 파싱 및 이미지 조작을 할 수 있도록). 이 다운로더 객체는 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];
}
});
}
주/이동했다.