如何为多个URL使用异步NSURLConnection

时间:2013-01-14 16:06:23

标签: objective-c ipad ios5 nsurlconnection nsinvocationoperation

首先,我认为iPad只有单个NIC(或任何硬件)来处理连接。因此请求按顺序排队和服务,并且不能同时运行2个连接。猜测是真的吗?

我有UITabBar个控制器,每个标签的视图控制器下载&解析不同的JSON提要URL。 我创建了一个单例类,它从单个URL下载源,然后解析它并在工作完成时调用其中一个视图控制器的委托函数。 我决定使用异步连接,以免挂起主线程。

URLConnection4Target * _conn = [[URLConnection4Target alloc] initWithRequest:request delegate:self startImmediately:NO];

因此,所有标签都可以从同一个窗口访问(不是一个接一个地导航),并且它们对不同的Feed使用不同的URL。

我的问题是如何设计单例类中的连接以顺序地(或者如果可能的话)同时提供多个视图控制器。

我尝试使用NSInvocationOperation,因为我不确定如果用户点击一个标签并访问NSURLConnection对象时会发生什么,而对象已经可以被不同的视图控制器访问。

1 个答案:

答案 0 :(得分:0)

首先,网络连接的数量与NIC(网络接口卡)或以太网端口的数量无关。其次你提到你正在为URLConnection使用单例模式?在没有看到你的单身人士的情况下,我假设这是你似乎一次只能打开一个连接的原因。您可以根据需要为选项卡创建尽可能多的URLConnections,不要将它们限制为单例。想想URLConnection / request,N x请求/选项卡,你应该没问题。

因此,当选项卡可见/活动时,为内容创建URLRequest,让它在bg中异步工作,但确保将任何UI更新发布回主线程。最后,当请求完成时,取消分配并忘记它。