我正在一个应用程序中,我从每个页面以json格式从Web服务获取数据,并将数据发送到远程数据库。在此过程中,我的应用程序变慢。直到从中获取数据web服务没有加载下一个视图。它耗费了很多时间,有没有办法同时获取数据和显示视图。我听说过线程编程但是我不熟悉它。请告诉我应采用哪种技术使我的申请更快。非常感谢。
答案 0 :(得分: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
});
});
答案 1 :(得分:0)
你可以这样做 在后台进程中全部下载和上传数据,这样用户无需等到数据完成任务。
用于后台处理,您可以轻松使用
[self performSelectorInBackground:@selector(runProcessInBackground:) withObject:nil];
并且你也可以在appliaction中使用分页来显示数据,就像在第一次调用中一样,你将只收到来自Web服务的前100条记录,因此需要很短的时间,然后在100次提取后再加载另一条页面结束时有了它,你也可以增加你的应用程序。速度。
希望这会对你有所帮助。
答案 2 :(得分: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
}];