我有一个
NSArray
的链接。我想使用在线文章提取器 API (Clear Read) 解析它们,并根据每篇文章返回的结果(一些 HTML)将其放入 NSString
。
我的问题源于这样一个事实:假设我的数组中有 100 个 URL,我循环遍历数组,将每个项目拍摄到 API 中,并以 JSON 格式返回一些结果。这相当于一次异步调用 100 个
NSURLConnection
调用。
我不确定这是否会成为问题,但是当我给它 100 个 URL(真正的字符串,没有一个是 nil)时,返回的数据通常具有 JSON 键的空值(当它们不应该时) ,或者返回的数据是
nil
。还有一堆重复的。
我应该比现在更好地处理多个异步连接吗?如果是这样,怎么办?
一些想法:
如果您正在执行并发异步请求并使用异步
NSURLConnection
,那么您需要为此下载操作定义自己的类,以确保每个连接都跟踪其自己的属性。这样,所有内容都可以封装在此类中,其中生成的下载对象可以跟踪下载的内容、解析的内容等。如果您不使用异步 NSURLConnection
(例如,您只是使用 dataWithContentsOfURL
),尽管您会失去一些 NSURLConnection
提供的进度更新和/或流媒体机会,但它甚至更容易。为了获得最佳性能,您应该执行并发请求。话虽如此,发送到任何特定服务器的并发请求不应超过四到五个。这是 iOS 强加的限制,特别是如果您的网络连接速度较慢,则可能会面临连接超时的风险。
如果您正在模拟器上进行初步测试,您可能需要确保尝试“网络链接调节器”。它是“Xcode 的硬件 IO 工具”的一部分,可在“Apple 开发人员下载”中获取。有些问题(例如,如果您有太多并发请求发送到特定服务器,则会出现上述超时问题),这些问题仅在缓慢的连接中显现出来。
。不过,如果要排队 100 多个操作,请务必将 maxConcurrentOperationCount
设置为
queue
的 AFHTTPClient
。
特别是,您可以考虑创建一个 networking manager
类来创建和管理
,而该类又为您点击的每个端点(基本 URL)管理
AFHTTPRequestOperations。