为什么使用AFNetworking而不是dispatch_async?

Zol*_*tók 17 networking objective-c ios afnetworking

为什么要使用AFNetworking的异步方法,只需使用GCD即可完成异步调用?

dispatch_async(bgQ, ^{

                //NSURLConnection code

                dispatch_async(dispatch_get_main_queue(), ^{
                    //UI code
                });
});
Run Code Online (Sandbox Code Playgroud)

mat*_*ttt 36

AFNetworking FAQ顶部详细解答这个问题:

虽然NSURLConnection提供了+sendAsynchronousRequest:queue:completionHandler:+sendSynchronousRequest:returningResponse:error:,但使用AFNetworking很多好处:

  • AFURLConnectionOperation它的子类继承自NSOperation,它允许取消,挂起/恢复请求,并由一个管理NSOperationQueue.
  • AFURLConnectionOperation 还允许您轻松地流式上传和下载,处理身份验证挑战,>监控上载和下载进度,以及控制缓存行为或请求.
  • AFHTTPRequestOperation 及其子类根据HTTP>状态代码和内容类型区分成功和不成功的请求.
  • AFNetworking包括特定于媒体的请求操作,这些操作可转换NSData为更多可用格式,如JSON,> XML,图像和属性列表.
  • AFHTTPClient 提供了与Web服务交互的便捷界面,包括默认标头,身份验证,>网络可访问性监控,批处理操作,查询字符串参数序列化和多部分表单请求.
  • UIImageView+AFNetworking 添加了一种方便的方式来异步加载图像.