2012-09-28 46 views
1

NSURLConnection的文档说NSURLConnection在单独的线程上运行,并且在启动连接的线程上调用委托方法。多个NSURLConnections是否创建多个NSThreads?

我有一个以上的NSURLConnection的对象包裹在“URLDownload < NSURLConnectionDelegate>”我在并行运行的对象。当我暂停我的程序(在某个时候我把一个断点放进去)并且调试Debug Navigator时,我看到只有一个com.apple.NSURLConnectionLoader线程。

这里是我想这样的作品:

  1. 我创建5 URLDownload对象(他们每个人都有自己的NSURLConnection的
  2. 5个线程创建(每个NSURLConnection的
  3. 每个NSURLConnection调用它是启动它们的线程上的委托方法。

因此,有5个线程(每个NSURLConnection的),但他们的数据(didReceiveData ...法等)在单个线程的处理。

我收到了吗?

+0

你最好的选择是什么?目前还不清楚你的问题是什么。 – hooleyhoop

+0

@hooleyhoop我不应该添加最后一句话。我真正的问题来自问题标题。我会删除它。 – vale4674

回答

1

异步NSURLConnection将在那里完成主线程的工作,这就是你所需要知道的。

线程使用大量资源相对于网络连接的工作量,因此1个异步NSURLConnection可能使用1个后台线程,2个异步NSURLConnections可能使用2个后台线程,但100个异步NSURLConnections可能不会使用100个后台线程。

NSURLConnection是一个黑匣子,将为您管理最佳金额。这可能基于你有多少处理器,你的网络速度等等(注意,我并不是说我知道它是如何工作的,只是你不需要知道 - 它会做正确的事情。每个连接线程将是一个非常可怕的方式todo它)。

委托方法(didReceiveData等)在启动连接的线程上被调用,所以这不同于说它们是在单个线程上调用的。如果您在五个不同的线程上启动5个连接,您将在五个不同的线程上获得回调。