同步ASIHTTPRequest更新标签

时间:2011-08-30 06:16:43

标签: iphone objective-c ios asihttprequest

对我来说似乎很简单但不容易..我正在调用一些同步ASIHTTPRequests,当每个请求完成后,我想更新一个像下面的标签..

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”。实现此目的的简单和最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

UIKit没有机会重绘标签,因为你正在阻止整个网址请求的主线程。

您应该使用异步请求,因此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];