如何从Web服务管理数据,使应用程序快速,流畅

时间:2012-10-29 11:08:16

标签: iphone objective-c

我正在一个应用程序中,我从每个页面以json格式从Web服务获取数据,并将数据发送到远程数据库。在此过程中,我的应用程序变慢。直到从中获取数据web服务没有加载下一个视图。它耗费了很多时间,有没有办法同时获取数据和显示视图。我听说过线程编程但是我不熟悉它。请告诉我应采用哪种技术使我的申请更快。非常感谢。

3 个答案:

答案 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
    });
});

看看Ray Wenderlich's Grand Central Dispatch tutorial

答案 1 :(得分:0)

你可以这样做 在后台进程中全部下载和上传数据,这样用户无需等到数据完成任务。

用于后台处理,您可以轻松使用

[self performSelectorInBackground:@selector(runProcessInBackground:) withObject:nil];

或者你也可以参考这个 https://stackoverflow.com/questions/9949248/iphone-sdk-running-a-repeating-process-in-a-background-thread.

并且你也可以在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
   }];