NSURLConnection阻止主线程吗?

时间:2010-07-29 15:10:47

标签: iphone multithreading nsurlconnection

我在iPhone应用程序中使用NSURLConnection,并且在将initWithRequest:发送到NSURLConnection实例后,界面似乎变慢了。我不确定是否发生这种情况是因为我的处理代码需要很长时间来处理响应,或者是因为NSURLConnection阻塞了主线程。

任何人都可以确认NSURLConnection将创建连接并等待单独线程上的数据,然后在主线程上调用其委托方法吗?

谢谢!

2 个答案:

答案 0 :(得分:10)

NSURLConnection支持两种操作模式:异步和同步。根本不使用单独的线程。它们都只使用一个线程,即你运行它们的任何线程。

在同步模式下,NSURLConnection将阻止您运行它的任何线程。异步模式使用运行循环(从开发人员的角度来看)与后台线程类似,但开销较低且没有任何线程安全问题。如果使用异步模式,则需要在主线程中运行它。它不会阻止任何事情。

如果您的界面速度变慢,这与同步使用NSURLConnection不一致,这会导致您的界面完全停止,直到请求完成。

答案 1 :(得分:-1)

如果您在NSURLConnection上关注苹果示例,则将在与主线程不同的线程中处理该调用。