ASIHttprequest 报错
(void)requestReceivedResponseHeaders:(NSMutableDictionary *)newResponseHeaders {
if ([self error] || [self mainRequest]) { return; }
--> if (delegate && [delegate respondsToSelector:didReceiveResponseHeadersSelector]) {
先是封装了一个ASIHttprequest 异步调用的类,但是在每次打开调用这个类的viewController的时候会报错,不是全部报错,报错的位置位于上面这一条。
一直百思不得其解,类似的问题有
http://stackoverflow.com/questions/5701132/asihttprequest-crashes-my-app
http://www.open-open.com/lib/view/open1363230763484.html
http://www.cocoachina.com/bbs/read.php?tid=253887
看过之后,确定封装的类没有问题,问题在于ARC过早的释放了ASIHttprequest的对象。
原来的引用的代码
BIDJsonConn *conn=[[BIDJsonConn alloc]intiwithurl:mainurl]
conn.delegateforConn=self;
NSString *inUrl=[[NSString alloc]initWithFormat: @"GetUserID/%@",_thisuser.username];
[conn GetdataByJsonAsy:inUrl];
get的异步访问方法
-(void)GetdataByJsonAsy:(NSString *)inUrl{
NSMutableString *str_serverUrl=[[NSMutableString alloc]initWithString:self.mainUrl];
[str_serverUrl appendString:inUrl];
NSURL *url=[NSURL URLWithString:str_serverUrl];
ASIHTTPRequest *request=[ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request startAsynchronous];
}
高手们应该一眼能看出这个问题
BIDJsonConn 的实例conn在这里实例化后运行完这一段代码很可能就被释放了。这个时候异步完成回调的时候就找不到对象了,因为就会报错
将conn声明为变量
@interface BIDWelcomeViewController : UIViewController<JsonConnDeleage>
{
BIDJsonConn *conn;
}
在viewload中实例化,就不会再报错了。
这个问题其实不是只局限于ASIHttprequest 的异步调用,适合很多异步调用的例子都需要注意这个问题,需要将异步执行的对象声明为该类的变量
AFNetworking比ASIHttprequest 新很多也支持ARC,下次还是看看AFNetworking吧
著作权声明:本文由http://www.cnblogs.com/keithmoring/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!
ASIHttprequest 报错的更多相关文章
- iOS开发-url包括中文报错解决的方法
常常, 我们用通过这个方案调用API. NSString* urlString = [NSString stringWithFormat:@"http://api.douban.com/v2 ...
- Windows 7上执行Cake 报错原因是Powershell 版本问题
在Windows 7 SP1 电脑上执行Cake的的例子 http://cakebuild.net/docs/tutorials/getting-started ,运行./Build.ps1 报下面的 ...
- 关于VS2015 ASP.NET MVC添加控制器的时候报错
调试环境:VS2015 数据库Mysql WIN10 在调试过程中出现类似下两图的同学们,注意啦. 其实也是在学习的过程中遇到这个问题的,找了很多资料都没有正面的解决添加控制器的时候报错的问题,还是 ...
- php报错 ----> Call to undefined function imagecreatetruecolor()
刚才在写验证码的时候,发现报错,然后排查分析了一下,原来是所用的php版本(PHP/5.3.13)没有开启此扩展功能. 进入php.ini 找到extension=php_gd2.dll ,将其前面的 ...
- scp报错 -bash: scp: command not found
环境:RHEL6.5 使用scp命令报错: [root@oradb23 media]# scp /etc/hosts oradb24:/etc/ -bash: scp: command not fou ...
- VS2015使用scanf报错的解决方案
1.在程序最前面加: #define _CRT_SECURE_NO_DEPRECATE 2.在程序最前面加: #pragma warning(disable:4996) 3.把scanf改为scanf ...
- VS项目中使用Nuget还原包后编译生产还一直报错?
Nuget官网下载Nuget项目包的命令地址:https://www.nuget.org/packages 今天就遇到一个比较奇葩的问题,折腾了很久终于搞定了: 问题是这样的:我的解决方案原本是好好的 ...
- Tomcat启动报错org.springframework.web.context.ContextLoaderListener类配置错误——SHH框架
SHH框架工程,Tomcat启动报错org.springframework.web.context.ContextLoaderListener类配置错误 1.查看配置文件web.xml中是否配置.or ...
- Android——eclipse下运行android项目报错 Conversion to Dalvik format failed with error 1解决
在eclipse中导入android项目,项目正常没有任何错误,但是运行时候会报错,(clean什么的都没用了.....)如图: 百度大神大多说是jdk的问题,解决: 右键项目-Properties如 ...
随机推荐
- java自定义注解与反射
java注解与反射一.Java中提供了四种元注解,专门负责注解其他的注解,分别如下 1.@Retention元注解,表示需要在什么级别保存该注释信息(生命周期).可选的RetentionPoicy参数 ...
- Nginx Errors: upstream response cache error
Nginx Errors upstream response cache error *2470578 an upstream response is buffered to a temporary ...
- springboot学习(八) 使用jpa访问数据库
1.添加maven依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connecto ...
- ReferenceError: Promise is not define
尽管加入了babel-polyfill ,依然出现 [ReferenceError: Promise is not define]的问题.目前只在三星.金立手机出现这种问题.没办法,只能强行修复了. ...
- python3输出指定log信息
问题背景: win10 python xxx.py > c:test.txt 上面这句只能把信息输出到test.txt,但是控制台看不到信息 ########################## ...
- Spell checker - poj 1035 (hash)
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 22541 Accepted: 8220 Description Yo ...
- [已解决]pycharm报错:AttributeError: module 'pip' has no attribute 'main'
> 更新pip后,pycharm更新模块报错,经过一番查找,现提供两种解决办法. 报错片段信息如下: AttributeError: module 'pip' has no attribute ...
- Spring MVC资源绑定视图解析器
ResourceBundleViewResolver使用属性文件中定义的视图bean来解析视图名称. 以下示例显示如何使用Spring Web MVC框架中的ResourceBundleViewRes ...
- 一步步教你搭建TinyOS2.1.2开发环境
(本教程使用的是VirtualBOX +ubuntu14.04+tinyos2.1.2) note:看了非常多的tinyos的安装教程.区别不是非常大,无非就是安装编译器配置环境等.尽管简单,但还是有 ...
- Mustache(3)
一.简单示例 代码: 1 function show(t) { 2 $("#content").html(t); 3 } 4 5 var view = { 6 title: 'YZ ...