ASIHTTP - 离开视图并得到EXC_BAD_ACCESS
问题描述:
我使用ASIHTTP作为委托使用我的视图控制器运行一个http请求,如果用户在请求完成之前离开视图控制器,我会在ASIHTTP代码中获得一个EXC_BAD_ACCESS正在做一个if(委托...)ASIHTTP - 离开视图并得到EXC_BAD_ACCESS
在我的视图控制器dealloc中有什么我必须做的吗?如果用户离开,我只想简单地删除请求。
答
像这样的问题最常见的原因是ASIHTTPRequest对象仍处于活动状态,并且其委托字段指向一个现在销毁的对象。当ASIHTTPRequest尝试告诉代理请求已完成时,EXC_BAD_ACCESS将会发生,依此类推。
你的dealloc方法为是asihttprequest代表应具备的对象:
request.delegate = nil;
[request cancel]
[request release]
如果你有在同一时间只有一个请求有效,你必须有相同的代码的任何地方,你开始一个新的请求,以确保任何以前的请求被正确取消。
如果您有多个请求处于活动状态,则需要跟踪所有请求,并取消它们全部的委托。
作为参考,我一直在使用ASIHTTPRequest约18个月,并且已经为与取消请求有关的困难竞赛条件提供了一些修复。
这通常是您的代码有问题。发布一些,我们会试着破译这个问题。 – esqew 2011-06-13 01:24:13
如果发生崩溃,则会出现回溯或崩溃日志。发表它。 – bbum 2011-06-13 05:40:19