1

我在用着

    html = [NSMutableData dataWithContentsOfURL:url];

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

谢谢!

4

2 回答 2

1

UIWebViewloadRequest:方法已经是异步的。从文档:

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

因此,您所要做的就是使用此方法,并且您的 UI 在加载期间将保持响应 - 即使在星巴克 ;-)。

于 2013-08-06T19:37:21.000 回答
1

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

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

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

于 2013-08-06T20:05:37.370 回答