asynchronous调用使用IOS的方法4
我想asynchronous调用一个方法。 这是从服务器获取HTML并将其设置为UIWebView
的一种方法:
NSString *htmlTest = [BackendProxy getContent]; [webView loadHTMLString:htmlTest baseURL: nil]; [webView setUserInteractionEnabled:YES];
我想在数据提取期间在UIWebView
中启动一个活动指示器,所以我需要以asynchronous方式调用getContent
。 我怎样才能做到这一点?
我build议使用NSObject
performSelectorInBackground:withObject:
如下所示:
- (void)loadIntoWebView: (id) dummy { NSString *html = [BackendProxy getContent]; [self performSelectorOnMainThread: @selector(loadingFinished:) withObject: html]; } - (void)loadingFinished: (NSString*) html { // stop activity indicator [webView loadHTMLString:html baseURL: nil]; [webView setUserInteractionEnabled:YES]; } - (void) foo { // ... // start activity indicator [self performSelectorInBackground: @selector(loadIntoWebView:) withObject: nil]; }
对于GCD,Apple的新(ish)并发API来说,这是一个很好的用例。
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async(queue, ^ { // Background work here NSLog(@"Finished work in background"); dispatch_async(dispatch_get_main_queue(), ^ { NSLog(@"Back on main thread"); }); });
这里是派遣队列的文档
- NSTimer不会失效
- 在可重用表格单元格中使用NSCache和dispatch_async的正确方法是什么?
- 如何在返回variables之前等待firebase将数据加载到variables中然后调用函数
- 如何在Swift中完成外部asynchronous请求之前先完成内部asynchronous请求?
- 核心数据加载Swift后asynchronous刷新UITableView
- 点击或滚动后,asynchronous下载的图像只出现在UITableView中
- 后台networking调用 – iOS
- 使用RestKit从NSURLasynchronous加载图像
- 使用NotificationCenter Observer处理asynchronous请求