如何在iOS中同时加载单个网页?

时间:2013-08-06 19:23:26

标签: objective-c concurrency

我正在使用

    html = [NSMutableData dataWithContentsOfURL:url];

从网页加载html。但是,通常需要10-15秒(在星巴克的无线网络上)。看起来这个任务不适合并行化,因为只加载了一个页面。但我想知道我是否可以让许多线程加载HTML的一部分然后将字符串连接在一起。我怎么能这样做?

谢谢!

2 个答案:

答案 0 :(得分:1)

您的UIWebView loadRequest:方法已经异步。来自文档:

  

通过启动异步客户端请求连接到给定的URL。

所以你要做的就是使用这种方法,你的UI在加载过程中会保持响应 - 即使在星巴克; - )。

答案 1 :(得分:1)

你说任务不适合并行化,因为只加载一个页面,但你确定不想在UI线程上加载!

要保持UI响应,您需要在后台线程上加载,然后在完成后将结果发布回UI线程。这就是-[UIWebView loadRequest:]将在内部进行的操作。这样,您可以在页面加载时显示进度微调器,或允许用户按下以取消加载。

有许多方法可以在iOS中的后台线程上运行任务。这里最简单的方法可能是使用dispatch_async()并在块内进行加载。或者为了更多控制(例如允许取消),请使用NSOperation