我正在一个应用程序中工作,在该应用程序中,我从每个页面的 json 格式的 Web 服务获取数据,并将数据发送到远程数据库。在这个过程中,我的应用程序变得越来越慢。直到从 Web 服务获取数据下一个视图没有加载。这很耗时,有什么方法可以同时获取数据和显示视图。我听说过线程编程,但我不熟悉它。请建议我应该采用哪种技术来制作我的应用程序更快。任何帮助将不胜感激。
问问题
715 次
3 回答
3
您可以使用 Grand Central Dispatch 或 NSInvocationOperation 在后台线程中进行加载:
dispatch_queue_t q = dispatch_get_global_queue(0, 0);
dispatch_queue_t main = dispatch_get_main_queue();
dispatch_async(q, ^{
PagedSearchResult *result = // something which takes a while to complete
dispatch_sync(main, ^{
// update the UI
});
});
于 2012-10-29T11:16:55.670 回答
0
为此,您可以像在后台进程中完成所有数据的下载和上传一样,这样用户就不需要等到数据完成他们的任务。
对于后台进程,您可以轻松地使用
[self performSelectorInBackground:@selector(runProcessInBackground:) withObject:nil];
你也可以在应用程序中使用分页来显示数据,比如在第一次调用中你将只接收来自 Web 服务的前 100 条记录,这样会花费很短的时间,在获取 100 条记录后,当页面结束时加载另一个记录,这样也可以你可以增加你的应用程序。速度。
希望这会帮助你。
于 2012-10-29T11:22:14.650 回答
0
出于您的目的,最简单的方法是使用标准NSURLConnection
. 它是开箱即用的异步。在完成处理程序中,您可以例如更新您的 UI,或通知它自行更新。
NSURLRequest *request = [NSURLRequest requestWithURL:
[NSURL URLWithString:urlString]];
[NSURLConnection sendAsynchronousRequest:request
queue:self.queue
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){
// do something with data or handle error
}];
于 2012-10-29T11:27:43.970 回答