异步请求需要运行循环。当数据传递到服务器或是被客户端接收时,运行循环用于实现事件与委托对象之间的通信。异步请求在发出时,会在当前线程的运行循环上操作,这个实现细节是很重要的,因为在GCD块中或者是通过NSOperationQueue创建的线程并没有运行循环。因此,如果在后台线程上发出了异步请求,那么还需要确定线程是有运行循环还是使用了别的运行循环。如下代码片断展示了如何显示地将请求处理指定给运行循环。

    NSURLConnection connection=[[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:NO];
[connection scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
[connection start];

第一个操作创建了NSURLConnection对象,不过并没有立刻启动方法,这样就可以进一步初始化了。下一步代码获取到主线程的运行循环,然后将它提供给连接,作为其运行循环。最后,连接通过start方法开始处理。如果不想在主运行循环中执行异步请求,那么需要在另一个线程上创建运行循环,然后,针对这个新创建的运行循环调度连接。

参考资料:《iOS网络高级编程-iPhone和iPad的企业应用开发》

最新文章

  1. Hibernate1
  2. 编码符_new
  3. CSS3 学习笔记
  4. SAP ALV OO 选择行打印
  5. html select 下拉箭头隐藏
  6. 【转载】s3c2440裸机开发调试环境(MDK4.6,Jlink v8,mini2440)
  7. 计数排序详解以及java实现
  8. Java中的try/catch/finally
  9. Zepto,Zepto API 中文版,Zepto 中文手册,Zepto API,Zepto API 中文版,Zepto 中文手册,Zepto API 1.0, Zepto API 1.0 中文版,Zepto 1.0 中文手册,Zepto 1.0 API-translate by yaotaiyang
  10. java之认识基本数据类型及其封装类装箱和拆箱总结
  11. Unity3D游戏开发从零单排(五) - 导入CS模型到Unity3D
  12. quarze的工作原理
  13. 使用Gradle编译release apk报错:Please correct the above warnings first
  14. 生成Token字符串
  15. iOS开发——判断是否第一次启动
  16. 复杂的1秒--图解Google搜索技术
  17. spring-boot学习笔记之Conditional
  18. C#保留2位小数的做法
  19. Codeforces Round #503 (by SIS, Div. 2)
  20. SQL 中的连接查询

热门文章

  1. Linux - 针对用户账号的常用操作
  2. java单例类的几种实现
  3. shell 终端terminfo命令 tput
  4. IDEA快捷键--与Eclipse快捷键的对比--IDEA快捷键设置成Eclipse默认快捷键
  5. Java生成某段时间内的随机时间
  6. pigz 压缩
  7. TCP 流量控制、拥塞控制
  8. CentOS7下搭建FastDfs(V5.11)+Keepalived分布式集群部署
  9. Grape简介
  10. ASP.NET MVC 与NLog的使用