是否有其他人在ASIHTTPRequest中遇到此问题?似乎当我在后台线程中执行异步请求并将委托设置为实例时,我可能遇到麻烦,因为在请求(放入NSOperationQueue)之前可以释放委托,返回回调。
似乎ASIHTTPRequest不保留它的委托 - 另一方面,Apple的NSURLConnection确实保留了委托(“NSURLConnection在初始化时保留其委托。它在连接完成加载,失败或被取消时释放委托“)。
我应该确保在后台线程中执行同步ASIHTTPRequests以使其工作(而不是异步请求)吗?或许我应该转储ASIHTTPRequest?还是我只是疯了?
答案 0 :(得分:7)
假设您使用的是最新版本的ASIHTTPRequest,使用它的正确方法(并避免崩溃)是:
委托应该保留请求(并且请求不应该保留委托)
委托销毁时(或者当您要取消请求时),应该执行以下操作:
[request setDelegate:nil];
[request cancel];
[request release];
你不应该以这种方式崩溃。 (几个月前我在ASIHTTPRequest中重写了代理处理,完全是为了避免其中的一些问题,我和Apple的人一起检查过这是处理事情的正确方法。我的更改都在官方的ASIHTTPRequest存储库中在github上,虽然之后没有正式发布 - 即。这些更改不在v1.7版本中,所以对于v1.7或更早版本,你仍然可以在遵循上述建议时看到崩溃。)
答案 1 :(得分:0)
我不知道ASIHTTPRequests是否不保留该对象,但您是否尝试在执行时保留它并在结束时将其保留?
我从未遇到过这个非常好的包装器的问题^^