目标C语言 如何为多个url使用异步NSURLConnection



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

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

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

因此选项卡都可以从同一个窗口访问(而不是一个接一个地导航),并且它们对不同的提要使用不同的url。

我的问题是如何在单例类中设计连接以顺序地服务于多个视图控制器(或者如果可能的话并发地)。

我试图使用NSInvocationOperation,因为我不确定会发生什么,如果用户单击一个选项卡,并访问NSURLConnection对象,而它已经由不同的视图控制器访问。

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

所以当一个选项卡是可见的/活动的,为内容创建URLRequest,让它在bg中异步工作,但确保任何UI更新都被发布回主线程。最后,当请求完成时,释放并忘记它。

最新更新