【发布时间】:2014-07-04 00:59:20
【问题描述】:
当我的代码点击 Web 服务调用时,活动指示器不显示,并且按钮冻结在“选定”状态。我希望在进行 Web 服务调用时运行活动指示器,以使屏幕看起来不会冻结。
这是我启动活动指示器的代码:
[activityInd startAnimating];
这是我进行网络服务调用的代码:
NSString *urlString = [NSString stringWithFormat:@"http://us.api.invisiblehand.co.uk/v1/products?query=%@&app_id=dad00cb7&app_key=ab386c3e1b99b58b876f237d77b4211a", [[searchedItem.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"]];
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [NSData dataWithContentsOfURL:url];
NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSArray *itemCallArray = [NSArray arrayWithArray:dataDictionary[@"results"]];
如何使活动指示器和 Web 服务调用在两个单独的线程上运行?
【问题讨论】:
-
有两种方法可以做你想做的事。首先,要使用异步请求。 NSURLConnection sendAsynchronousRequest 将是答案。二、在异步队列中运行活动指示器——dispatch_async
-
如果我的回答符合您的要求,请接受。否则,请告诉我。
标签: ios objective-c multithreading