ASIHTTPRequest问题

时间:2010-10-06 07:36:10

标签: iphone objective-c nsurlconnection asihttprequest

是否有其他人在ASIHTTPRequest中遇到此问题?似乎当我在后台线程中执行异步请求并将委托设置为实例时,我可能遇到麻烦,因为在请求(放入NSOperationQueue)之前可以释放委托,返回回调。

似乎ASIHTTPRequest不保留它的委托 - 另一方面,Apple的NSURLConnection确实保留了委托(“NSURLConnection在初始化时保留其委托。它在连接完成加载,失败或被取消时释放委托“)。

我应该确保在后台线程中执行同步ASIHTTPRequests以使其工作(而不是异步请求)吗?或许我应该转储ASIHTTPRequest?还是我只是疯了?

2 个答案:

答案 0 :(得分:7)

假设您使用的是最新版本的ASIHTTPRequest,使用它的正确方法(并避免崩溃)是:

委托应该保留请求(并且请求不应该保留委托)

委托销毁时(或者当您要取消请求时),应该执行以下操作:

[request setDelegate:nil];    
[request cancel];
[request release];

你不应该以这种方式崩溃。 (几个月前我在ASIHTTPRequest中重写了代理处理,完全是为了避免其中的一些问题,我和Apple的人一起检查过这是处理事情的正确方法。我的更改都在官方的ASIHTTPRequest存储库中在github上,虽然之后没有正式发布 - 即。这些更改不在v1.7版本中,所以对于v1.7或更早版本,你仍然可以在遵循上述建议时看到崩溃。)

答案 1 :(得分:0)

我不知道ASIHTTPRequests是否不保留该对象,但您是否尝试在执行时保留它并在结束时将其保留?

我从未遇到过这个非常好的包装器的问题^^