【问题标题】:how to use asynchronous NSURLConnection for multiple urls如何对多个 url 使用异步 NSURLConnection
【发布时间】:2013-01-14 16:06:22
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: objective-c ipad ios5 nsurlconnection nsinvocationoperation


    【解决方案1】:

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

    所以当标签可见/活动时,为内容创建 URLRequest,让它在 bg 中异步工作,但确保所有 UI 更新都回传到主线程。最后,当请求完成时,解除分配并忘记它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-25
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多