多个NSURLConnections是否创建多个NSThreads?
问题描述:
NSURLConnection的文档说NSURLConnection在单独的线程上运行,并且在启动连接的线程上调用委托方法。多个NSURLConnections是否创建多个NSThreads?
我有一个以上的NSURLConnection的对象包裹在“URLDownload < NSURLConnectionDelegate>”我在并行运行的对象。当我暂停我的程序(在某个时候我把一个断点放进去)并且调试Debug Navigator时,我看到只有一个com.apple.NSURLConnectionLoader线程。
这里是我想这样的作品:
- 我创建5 URLDownload对象(他们每个人都有自己的NSURLConnection的)
- 5个线程创建(每个NSURLConnection的 )
- 每个NSURLConnection调用它是启动它们的线程上的委托方法。
因此,有5个线程(每个NSURLConnection的),但他们的数据(didReceiveData ...法等)在单个线程的处理。
我收到了吗?
答
异步NSURLConnection将在那里完成主线程的工作,这就是你所需要知道的。
线程使用大量资源相对于网络连接的工作量,因此1个异步NSURLConnection可能使用1个后台线程,2个异步NSURLConnections可能使用2个后台线程,但100个异步NSURLConnections可能不会使用100个后台线程。
NSURLConnection是一个黑匣子,将为您管理最佳金额。这可能基于你有多少处理器,你的网络速度等等(注意,我并不是说我知道它是如何工作的,只是你不需要知道 - 它会做正确的事情。每个连接线程将是一个非常可怕的方式todo它)。
委托方法(didReceiveData等)在启动连接的线程上被调用,所以这不同于说它们是在单个线程上调用的。如果您在五个不同的线程上启动5个连接,您将在五个不同的线程上获得回调。
你最好的选择是什么?目前还不清楚你的问题是什么。 – hooleyhoop
@hooleyhoop我不应该添加最后一句话。我真正的问题来自问题标题。我会删除它。 – vale4674