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

Objective c 如何在iOS中同时加载单个网页?,objective-c,concurrency,Objective C,Concurrency,我正在使用 html = [NSMutableData dataWithContentsOfURL:url]; 从网页加载html。然而,通常需要10-15秒(在星巴克的wifi上)。似乎该任务不适合并行化,因为只加载了一个页面。但是我想知道是否可以有很多线程,每个线程加载HTML的一部分,然后将字符串连接在一起。我该怎么做 谢谢 您的UIWebView的loadRequest:方法已经是异步的。从文档中: 通过启动异步客户端请求连接到给定URL 所以你所要做的就是使用这个方法,你的用

我正在使用

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


谢谢

您的
UIWebView
loadRequest:
方法已经是异步的。从文档中:

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

所以你所要做的就是使用这个方法,你的用户界面在加载过程中将保持响应——即使在星巴克;-)

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

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


在iOS中,有许多方法可以在后台线程上运行任务。这里最简单的方法可能是使用
dispatch\u async()
并在块内进行加载。或者使用
NSOperation

进行更多控制(例如,允许取消),我需要实际获取HTML作为字符串,以便使用正则表达式进行处理。至少我现在这样做。谢谢你的提示!