还有谁对ASIHTTPRequest有这样的问题吗?似乎当我在后台线程中执行异步请求时,委托设置为实例,我可能会遇到麻烦,因为委托可以在请求(放入NSOperationQueue中)返回回调之前被释放。
ASIHTTPRequest似乎没有保留它的委托--另一方面,苹果的NSURLConnection保留了委托("NSURLConnection在初始化时保留它的委托。当连接完成加载、失败或取消时,它会释放委托。“)。
我是否应该确保在后台线程中执行同步ASIHTTPRequests以使其工作(而不是异步请求)?或者我应该甩了ASIHTTPRequest?或者我只是疯了?
发布于 2010-10-07 15:46:34
假设您使用的是最新版本的ASIHTTPRequest,使用它(并避免崩溃)的正确方法是:
委派应保留请求(而请求不应保留委派)
当代理被销毁时(或当您想要取消请求时),代理应执行以下操作:
[request setDelegate:nil];
[request cancel];
[request release];这样你就不会崩溃了。(我在几个月前重写了ASIHTTPRequest中的委托处理,以避免其中的一些问题,并且在这样做之前,我与苹果的人核实了这是一种正确的处理方式。我的更改都在github上的官方ASIHTTPRequest库中,尽管自- ie以来还没有正式发布。这些更改不在v1.7版本中,因此在v1.7或更早的版本中,如果遵循上面的建议,您仍然可能会看到崩溃。)
发布于 2010-10-06 15:40:08
我不知道ASIHTTPRequests是否会保留对象,但您是否尝试在执行时保留它,并在结束时释放它?
对于这个非常好的包装器,我从来没有遇到过问题^^
https://stackoverflow.com/questions/3870314
复制相似问题