デバッガは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];
}
});
}
注/行くように語りました。