asiHttpRequest 取消访问的时候跳exc_bad_access
2015-10-22 15:55
645 查看
在stackoverflow.com上,有网友提出了两个解决方法。
第一个,使用同一的delegate,并且应用一运行就初始化它。如果其他类要调用异步请求,将delegate发过去。
调用方法如下:
- (void)sendUrl: (NSString *) restUrl withCallBack:(NSObject*) delegate;
然后,在delegate的实现方法中利用request的tag来标识来自哪一个类的异步调用。
第二个,使用block直接实现异步请求,抛弃delegate。
使用"setCompletionBlock:^"代替delegate的"setDidFinishSelector"。
request做一个设置就可以,比原来通过设置request.delegate再实现delegate的方法简单多了。
[request setCompletionBlock :^{
// 请求响应结束,返回 responseString
NSString *responseString = [request responseString ]; // 对于 2 进制数据,使用 NSData 返回 NSData *responseData = [request responseData];
NSLog ( @"%@" ,responseString);
}];
[request setFailedBlock :^{
// 请求响应失败,返回错误信息
NSError *error = [request error ];
NSLog ( @"error:%@" ,[error userInfo ]);
}];
第一个,使用同一的delegate,并且应用一运行就初始化它。如果其他类要调用异步请求,将delegate发过去。
调用方法如下:
- (void)sendUrl: (NSString *) restUrl withCallBack:(NSObject*) delegate;
然后,在delegate的实现方法中利用request的tag来标识来自哪一个类的异步调用。
第二个,使用block直接实现异步请求,抛弃delegate。
使用"setCompletionBlock:^"代替delegate的"setDidFinishSelector"。
request做一个设置就可以,比原来通过设置request.delegate再实现delegate的方法简单多了。
[request setCompletionBlock :^{
// 请求响应结束,返回 responseString
NSString *responseString = [request responseString ]; // 对于 2 进制数据,使用 NSData 返回 NSData *responseData = [request responseData];
NSLog ( @"%@" ,responseString);
}];
[request setFailedBlock :^{
// 请求响应失败,返回错误信息
NSError *error = [request error ];
NSLog ( @"error:%@" ,[error userInfo ]);
}];
相关文章推荐
- 【软考】网络—OSI七层模型
- [IOS] ASIHttpRequest库使用过程中发现的几个小问题
- kernel: TCP: time wait bucket table overflow 的解决
- Winpcap网络开发库入门,分类: C/C++/VC++
- HttpClient的用法
- 一次完整的HTTP事务是怎样一个过程?
- HTTP content-type对照表
- 记录一下centos安装httpd+php+mysql的过程
- DHCP 流程
- 分类算法之贝叶斯网络(Bayesian networks)
- Tomcat处理HTTP请求源码分析(下)
- Tomcat处理HTTP请求源码分析(上)(转)
- 游戏服务器:到底使用UDP还是TCP
- [转]HTTP协议详解
- 网络编程1-----获取本机IP地址
- 内核启动流程
- 使用ss命令代替netstat 统计TCP网络连接信息
- Unix Network Programming(4)---TCP
- TCP/IP协议族—OSI参考模型1
- Python网络爬虫(1)--url访问及参数设置