2012-04-24 80 views

回答

0

您必須在第二個線程上使用asynchronous downloader。然後異步使用委託回調!

例如:

@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; 
     } 
    }