ASIHTTP - 离开视图并获得EXC_BAD_ACCESS

时间:2011-06-13 01:19:25

标签: iphone asihttprequest

我使用ASIHTTP以我的视图控制器作为委托运行http请求,如果用户在请求完成之前离开视图控制器,我在ASIHTTP代码中得到一个执行if(委托)的EXC_BAD_ACCESS ......)

我的视图控制器dealloc中有什么必须做的吗?如果用户离开,我想简单地删除请求。

1 个答案:

答案 0 :(得分:5)

这类问题的最常见原因是ASIHTTPRequest对象仍处于活动状态,其委托字段指向现在已销毁的对象。当ASIHTTPRequest尝试告诉委托请求已完成等时,将发生EXC_BAD_ACCESS。

asihttprequest委托对象的dealloc方法应具有:

request.delegate = nil;
[request cancel]
[request release]

如果您一次只有一个请求处于活动状态,则必须在启动新请求的任何位置使用相同的代码,以确保正确取消任何先前的请求。

如果您有多个请求处于活动状态,则需要跟踪所有请求,并取消并取消所有请求的代理。

作为参考,我一直在使用ASIHTTPRequest约18个月,并为与取消请求相关的困难竞争条件做出了一些修复。