0

I call sendSynchronousRequest in my second thread, and my second thread will be blocked, So how to get progress information in my first thread?

Yuwen Yan
  • 4,777
  • 10
  • 33
  • 63

1 Answers1

0

You must use an asynchronous downloader on your second thread. Then use a delegate callback asynchronously!

For example:

    @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;
      }  
    }
Community
  • 1
  • 1
Matt Melton
  • 2,493
  • 19
  • 25