ASIHttprequest 报错
2024-09-01 16:38:58
(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/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!
最新文章
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
- iOS 学习 - 18.TextField 自定义菜单事件,复制和微信分享
- JQ入门学习实战演练
- Github 新的项目管理模式——Projects
- Codeforces Gym 100114 J. Computer Network
- what's the difference between dim as and dim as new?
- Range
- ADO.NET 新特性之SqlBulkCopy
- 那些教程没有的php3-命名空间
- uafxcwd.lib(afxmem.obj) : error LNK2005 解决方法
- hiho1091_clicker背包问题
- SQL SERVER 生成ORACLE建表脚本
- 我的日常工具——gdb篇
- java 经典题
- 29个你必须知道的Linux命令
- Qt编程之QString 处理换行
- mirantis cert
- drupal 7 模块开发,hook_form
- HDU-4628 Pieces 如压力DP
- H5与客户端联调
热门文章
- matlab中syms与sym有什么差别
- android开发中,在java中怎样使用c提供过来char*
- LRU的C++实现引申出的迭代器问题
- KINavigationController使用演示例子
- 《DirectX 9.0 3D游戏开发编程基础》必备的数学知识 读书笔记
- leetcode第一刷_Balanced Binary Tree
- response.addCookie(cookie),添加失败
- IOS开发之ZBarReaderView的使用
- HDU - 5301 Buildings
- 升级/安装主题插件提示权限不足 输入FTP解决办法