多个NSURLConnections是否会创建多个NSThreads?

时间:2012-09-28 07:28:49

标签: ios nsurlconnection nsthread nsurlconnectiondelegate

NSURLConnection的文档说 NSURLConnection 在一个单独的线程上运行,并且在启动连接的线程上调用委托方法。

我有更多的 NSURLConnection 对象包含在“ URLDownload< NSURLConnectionDelegate> ”对象中,并行运行。

在暂停我的程序时(有时我在其中放入断点)并查看Debug Navigator,我只看到一个 com.apple.NSURLConnectionLoader 线程。

以下是我认为这有效的方法:

  1. 我创建了5个 URLDownload 对象(每个对象都有自己的 NSURLConnection
  2. 创建了5个线程(每个 NSURLConnection 一个
  3. 每个 NSURLConnection 在启动它们的线程上调用它的委托方法。
  4. 因此有5个线程(每个 NSURLConnection 一个),但是他们的数据( didReceiveData ... 方法和其他)在单个线程上处理。

    我做对了吗?

1 个答案:

答案 0 :(得分:1)

Asynchronous NSURLConnection将在主线程上运行,这就是你需要知道的全部内容。

线程使用大量的相对资源到网络连接的工作的量,所以1异步NSURLConnection的可使用1个后台线程,2个异步NSURLConnections可以使用2个后台线程,但100个异步NSURLConnections大概不会使用100背景线程。

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

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