对我来说似乎很简单但不容易..我正在调用一些同步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”。实现此目的的简单和最佳方法是什么?
答案 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];