ASIHTTPRequest替代方案

时间:2011-05-05 11:03:44

标签: iphone objective-c asihttprequest

我正在使用ASIHTTPRequest与服务器通信,但它会导致崩溃。 bug已知很长时间了,但仍然存在问题。

因此:ASIHTTPRequest有很好的替代方案吗?我在服务器端是灵活的,我也可以使用套接字或使用其他东西。 你会建议服务器客户端通信什么?

3 个答案:

答案 0 :(得分:9)

以下是作者提供一些ASIHTTPRequest alternatives主题的链接。

带有主题链接的列表:

  1. AFNetworking
  2. LRResty
  3. RestKit
  4. 适用于iOS的AWS开发工具包
  5. ShareKit
  6. 的NSURLRequest / NSURLConnection的

答案 1 :(得分:6)

我知道这可能不是您正在寻找的答案,但如果ASIHTTPRequest崩溃,那么您的代码中至少有90%可能存在错误 - 最常见的问题都与请求与委托生命周期问题有关。 NSURLConnection可能只会给你一组不同的问题(尽管它可能效果很好)。 NSURLConnection的功能也很少(没有缓存等)。

通常,您需要在委托被销毁之前从ASIHTTPRequest中删除委托(即,在委托的dealloc方法的最开始)。只要这样做,ASIHTTPRequest就无法调用解除分配的委托。您必须为每个请求执行此操作,包括已取消的请求。

您链接的错误似乎与一个非常特殊的情况有关,至少有一个原因是它没有被修复,似乎没有其他人能够重现它。

(我会在声明他们过去曾经遇到过ASIHTTPRequest的问题 - 特别是v1.7的发布包含一些可能导致崩溃的竞争条件,但这些后来在git树中得到修复。我没有亲自尝试过v1.8,但修复版的v1.7对我来说非常好。)

可能值得发布一个新问题,详细说明您正在看到的崩溃并分享您的一些代码/如何使用ASIHTTPRequest。

答案 2 :(得分:5)

ASIHTTPRequest非常受欢迎并被大量应用程序使用,因此,JosephH suggests,您的代码中存在错误的可能性更大。

话虽如此,如果 ASIHTTPRequest中,那么它是开源的 - 您可以修复它。我确信维护人员会欣赏补丁。 BAD_ACCESS可能会过度释放内存。

由于您没有说明您正在使用哪些功能,因此很难提出替代方案。如果你只是使用基础知识,你可以使用原生的NSURLConnection(我在它周围写了一个薄的包装,我确信那里有很多其他的)。另一方面,还有与核心数据集成的REST库(RESTKit)。