use*_*541 8 api objective-c nsurlconnection nsurlrequest ios
我有一个NSArray
链接.我想通过在线文章提取器API(清除读取)解析它们,并将每个文章(一些HTML)的结果返回给我NSString
.
我的问题源于这样一个事实,即我的数组中有100个URL,我循环遍历数组,将每个项目射入API,并在JSON中返回一些结果.这是NSURLConnection
异步激活100次调用.
我不确定这是不是一个问题,但当我给它100个URL(真正的字符串,没有一个是nil)时,返回的数据通常具有JSON键的空值(当它们不应该时),或者回来的数据是nil
.还有一堆重复.
我应该比现在更好地处理多个异步连接吗?如果是这样,怎么样?
几点想法:
如果您正在进行并发异步请求并且正在使用异步NSURLConnection
,那么您将需要为此下载操作定义自己的类,以确保每个连接都跟踪其自己的属性.这样,所有内容都可以封装在这个类中,生成的下载对象可以跟踪下载的内容,解析的内容等等.如果你不使用异步NSURLConnection
(例如你只是使用dataWithContentsOfURL
),它会更容易,尽管你丢失一些NSURLConnection
提供和/或流媒体机会的进度更新.
为获得最佳性能,您应该执行并发请求.话虽如此,您不应该有超过四或五个并发请求进入任何特定服务器.这是一个iOS强加的约束,特别是如果你的网络连接速度很慢,你可能会有连接超时的风险.
如果您在模拟器上进行初步测试,您可能需要确保尝试"网络链接调节器".它是"Xcode硬件IO工具"的一部分,可从Apple Developers下载中获得.存在一些问题(例如,如果您有太多并发请求发送到特定服务器的上述超时问题),这些问题仅在慢速连接中显示.
话虽如此,您还需要确保在具有真实网络速度的设备上测试您的解决方案.在模拟器上成功运行大规模并行任务很容易,这些任务对于设备来说过于贪婪.将并发会话数限制为五会减少此资源问题,但它应该是您的测试策略的一部分.
我同意JRG-Developer,你应该研究已建立的框架,比如AFNetworking.确保设置maxConcurrentOperationCount
为queue
的AFHTTPClient
,不过,如果排队100个加操作.
我不知道您的100个请求需要多少数据,但需要预先知道应用程序审批流程已被拒绝拒绝在蜂窝网络上发出特殊网络请求的应用程序.应用程序审核指南中没有明确说明过度的蜂窝网络活动是什么,尽管避免Apple App拒绝Apple声称您应确保在5分钟内不超过4.5mb.您可以使用可达性来确定您所在的网络类型,并且如果用户处于蜂窝状态(如果数据量接近此阈值),则可能会警告用户.
归档时间: |
|
查看次数: |
4587 次 |
最近记录: |