0

2 番目のスレッドで sendSynchronousRequest を呼び出すと、2 番目のスレッドがブロックされます。では、最初のスレッドで進捗情報を取得するにはどうすればよいでしょうか?

4

1 に答える 1

0

2番目のスレッドで非同期ダウンローダーを使用する必要があります。次に、デリゲートコールバックを非同期で使用します。

例えば:

    @protocol DownloadUIProtocol<NSObject>
    - (void)updateUI:(id)sender;
    @end

    @interface ViewController () {
      NSMutableData *receivedData_;
      NSDate *lastUpdateUITime_;
      __weak id<DownloadUIProtocol> delegate_;
    }
    @end

    ...

    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
      [receivedData_ appendData:data];

      NSDate *now = [NSDate date];
      if (fabs([lastUpdateUITime_ timeIntervalSinceDate:now]) > 60) {
        dispatch_async(dispatch_get_main_queue(), ^{
          if ([delegate_ respondsToSelector:@selector(updateUI:)]) 
            [delegate_ updateUI:self];
        });
        lastUpdateUITime_ = now;
      }  
    }
于 2012-04-24T16:40:55.553 に答える