当前位置: 首页 > news >正文

[常见问题]iPhone NSURLConnection delegate methods得不到调用

当你使用NSURLConnection异步模式时,比如代码如下:

NSString *url = [NSString stringWithFormat:@"http://google.cn/...",...];

url = [urlstringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];

connection= [[NSURLConnection alloc] initWithRequest:requestdelegate:self];

并实现了NSURLConnection的代理方法:

#pragma mark NSURLConnection delegate methods

// The following are delegate methods for NSURLConnection.

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

}

但是你发现代码方法永远执行不到。

原因一般是因为这些方法是在一个单独线程中执行,需要一段时间来处理网络数据。

而在此之前你可能在别处退出了该线程。

为了避免这种情况,通常你可以在发送URL请求后,等待数据处理完成再做下一步的事情,这样就可以和主线程或其它线程同步:

while(!finished) {

[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];

}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

finished = TRUE;

}

相关文章:

  • 内容管理系统(CMS)
  • 钱学森最后一次系统谈话:大学要有创新精神
  • 《程序员羊皮卷》走进Tech•Ed2009
  • 《程序员羊皮卷》走进Tech?Ed2009
  • Mondrian系列(三)-如何设计Mondrian的Schema(1)
  • 三大运营商的应用商店之路
  • OpenSSL介绍
  • 在Windows下编译OpenSSL(VS2005)【转】
  • 柏林墙倒塌20年纪念
  • 关于安装IBM的TDS的错误“error opening toollibs.cat”解决方法
  • 标记:博客访问量突破20万
  • iPhone开发指南-内存管理
  • 《火炬之光》中的“X射线”效果
  • 中缀和后缀算术表达式的分析比较
  • 清理windows资源管理器右键打开方式,新建菜单
  • 收藏网友的 源程序下载网
  • 【翻译】babel对TC39装饰器草案的实现
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • canvas 高仿 Apple Watch 表盘
  • Electron入门介绍
  • flask接收请求并推入栈
  • Invalidate和postInvalidate的区别
  • Java 多线程编程之:notify 和 wait 用法
  • JavaScript实现分页效果
  • Joomla 2.x, 3.x useful code cheatsheet
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • miaov-React 最佳入门
  • session共享问题解决方案
  • 阿里云Kubernetes容器服务上体验Knative
  • 编写高质量JavaScript代码之并发
  • 基于webpack 的 vue 多页架构
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 事件委托的小应用
  • 数组大概知多少
  • 微服务框架lagom
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 智能网联汽车信息安全
  • 第二十章:异步和文件I/O.(二十三)
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • # 计算机视觉入门
  • #Z2294. 打印树的直径
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (6)设计一个TimeMap
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (C语言)fread与fwrite详解
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (八)Spring源码解析:Spring MVC
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二)构建dubbo分布式平台-平台功能导图
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (七)c52学习之旅-中断
  • (十一)图像的罗伯特梯度锐化
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)linux 命令大全