1

デバッガは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]; 
     } 
    }); 
} 

注/行くように語りました。

答えて

1

そこにはEXC_BAD_ACCESSがありましたが、iPhoneで動作しているときには表示されませんでした。シミュレータ上で実行すると、実際に正しく表示されました。この悪いアクセスは、URLを設定する代わりにinitWithURLメソッドを使用しなかったためです(オブジェクトを作成するときにURLがまだ用意されていないためです)。 URLが準備完了してすべてがうまくいたら、initWithURLに電話します。

関連する問題