NSURLConnection的文档说 NSURLConnection 在一个单独的线程上运行,并且在启动连接的线程上调用委托方法。
我有更多的 NSURLConnection 对象包含在“ URLDownload< NSURLConnectionDelegate> ”对象中,并行运行。
在暂停我的程序时(有时我在其中放入断点)并查看Debug Navigator,我只看到一个 com.apple.NSURLConnectionLoader 线程。
以下是我认为这有效的方法:
因此有5个线程(每个 NSURLConnection 一个),但是他们的数据( didReceiveData ... 方法和其他)在单个线程上处理。
我做对了吗?
答案 0 :(得分:1)
Asynchronous NSURLConnection将在主线程上运行,这就是你需要知道的全部内容。
线程使用大量的相对资源到网络连接的工作的量,所以1异步NSURLConnection的可使用1个后台线程,2个异步NSURLConnections可以使用2个后台线程,但100个异步NSURLConnections大概不会使用100背景线程。
NSURLConnection是一个黑盒子,可以为您管理最佳金额。这可以基于您拥有多少处理器,您的网络速度等(请注意,我并不是说我知道它是如何工作的,只是您不需要知道 - 它会做正确的事情。每个连接的线程将是一个非常可怕的方式todo它)。
在启动连接的线程上调用委托方法(didReceiveData等),这与在单个线程上调用它们不同。如果你在五个不同的线程上启动5个连接,你将在五个不同的线程上获得回调。