2011-08-30 56 views
0

這似乎很簡單,但不容易的,我..我打電話了幾個同步ASIHTTPRequests並在每個請求完成後,我想更新像下面的一個標籤..同步ASIHTTPRequest更新標示

self.status.text = @"Google"; 

NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; 
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request startSynchronous]; 


self.status.text = @"Yahoo"; 

NSURL *url = [NSURL URLWithString:@"http://www.yahoo.com"]; 
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request startSynchronous]; 



self.status.text = @"Apple"; 

NSURL *url = [NSURL URLWithString:@"http://www.Apple.com"]; 
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request startSynchronous]; 

然而,一旦所有通話完成,它只會顯示「Apple」。什麼是實現此目的的簡單和最佳方法?

回答

0

UIKit沒有機會重新繪製標籤,因爲您阻止整個url請求的主線程。

您應該使用異步請求,以便UI始終能夠響應。同時更新完成塊中的UI:

self.status.text = @"Google"; 

NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; 
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request setCompletionBlock:^{ 
    self.status.text = @"Yahoo"; 
    // start another request etc. 
}]; 
[request startAsynchronous];