ASIHTTPRequest替代方案

5
我目前正在使用ASIHTTPRequest与服务器进行通信,但它导致了崩溃。这个bug已经存在很长时间了,但仍然是一个问题。
因此:是否有好的替代方案可以取代ASIHTTPRequest?我在服务器端很灵活,也可以使用套接字或其他方法。 你会推荐哪种服务器客户端通信方式呢?

1
NSURLConnection是Apple官方提供的一个类,用于在iOS开发中进行网络连接。具体使用方法详见http://developer.apple.com/library/ios/#documentation/cocoa/reference/foundation/Classes/NSURLConnection_Class/Reference/Reference.html。 - vakio
可以的,谢谢你的建议。 - Pascalius
ASIHTTPRequest现已弃用。您可能想要查看Foursquare发布的FSNetworking库作为可能的替代方案。 - Dan J
3个回答

9

这里是作者提供一些ASIHTTPRequest替代方案的主题链接。

以下是主题中列出的替代方案及其链接:

  1. AFNetworking
  2. LRResty
  3. RestKit
  4. AWS SDK for iOS
  5. ShareKit
  6. NSURLRequest/NSURLConnection

6
我知道这可能不是你要找的答案,但如果ASIHTTPRequest崩溃了,那么很有可能在你的代码中存在错误——最常见的问题都与请求和委托的生命周期有关。NSURLConnection可能会给您带来不同的问题(尽管它可能表现良好)。NSURLConnection也具有较少的功能(无缓存等)。
通常,在委托销毁之前(即在委托的dealloc方法的开头),您需要从ASIHTTPRequest中删除委托。只要这样做,ASIHTTPRequest就不可能调用一个已释放的委托。这对于每个请求都必须这样做,包括已取消的请求。
您链接的错误似乎与一个非常特定的情况有关,至少一个原因是没有其他人能够复现它。
(我要说明的是,过去ASIHTTPRequest曾经存在问题——特别是v1.7的发布包含一些可能导致崩溃的竞态条件,但这些后来都被修复了。我个人没有尝试v1.8,但具有修复程序的v1.7对我而言工作得非常好。)
值得发表一个新问题,详细描述您看到的崩溃,并分享您的一些代码/如何使用ASIHTTPRequest。

谢谢,感谢你的帮助。我会重新检查我的代码,但是我已经花了很多精力进行错误跟踪,并尝试过几次将委托重置为nil,但没有运气。 - Pascalius

5

ASIHTTPRequest相当受欢迎,被许多应用程序使用,因此,正如JosephH建议的那样,更有可能是您代码中存在错误。

话虽如此,如果确实是ASIHTTPRequest出了问题,那么它是开源的--您可以修复它。我相信维护者会感激您的贡献。BAD_ACCESS很可能是由于过度释放内存导致的。

由于您没有说明使用哪些功能,因此很难建议替代方案。如果您只使用基本功能,则可以使用本机的NSURLConnection(我编写了一个简单的包装器,我相信还有其他一些包装器)。在另一端,有一些与Core Data集成的REST库(RESTKit)。


谢谢,如果ASIHTTPREQUEST仍然无法使用,我会尝试使用包装器。我使用服务器-客户端通信进行身份验证,并使用文本/图像作为数据。 - Pascalius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接