NSURLConnection阻止主线程吗?

Bil*_*ill 8 iphone multithreading nsurlconnection

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

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

谢谢!

ale*_*ntd 10

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

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

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

  • 你需要小心最后一句话!如果您有5000个小请求,用户体验可能是接口速度变慢,(因为很多小停靠)我最近 (5认同)
  • 异步使用NSURLConnection会创建一个内部线程.这是异步的定义. (2认同)