首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

·第三方网络下载处理框架:AFNetworking网络下载处理(调用栈与缓存策略篇)

task, NSError * _Nonnull error) { NSLog(@"%@",error.userInfo); }]; } 看到这里,或许可以看manager对象的AFHTTPSessionManager...Task执行了,这个请求将结束) 根据请求查看内存缓存中是否目前有当前请求的图片,若有则查看success有无回调,有回调则将图片回调回去,否则,直接设置本ImageView的image 若本地内存缓存没有数据...,则先将imageView的image设置为占位图片并生成UUID,然后将请求和UUID发送出去; 若成功,则检查UUID是否和之前生成的UUID相等,以防止数据出错,没有问题则根据success是否有回调将图片发送出去...是否为空,失败则则返回信息(感觉这一句有点多余,因为调用这个方法之间已经检查了URL是否为空) 在Task没有执行时,多个请求可能会同时达到该方法,因此,需要一个字典存储该URL对应的AFImageDownloaderMergedTask...并将该自定义task的NSURLSessionDataTask赋值给task;若没有,则进行下一步 由于对于磁盘缓存作者是使用NSURLCache进行的,因此,根据存储策略进行不同操作以便于下载图片后进行磁盘缓存

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    源码分析之AFNetworking(二)

    文档翻译: AFHTTPSessionManager继承自AFURLSessionManager,提供了便捷的方法用于HTTP请求,当一个baseURL,根据相对路径,可以很方便地进行GET/POST或者其他请求...AFHTTPSessionManager本身并没有做什么实事,只是作为一个封装,将一些需求分发到其他相关类去做。...建议iOS 7之后的开发者在 AFHTTPSessionManager的基础上再进行一次封装,封装一些开发者自己的需要。...,请求方式都一样,最终都汇总到一个方法, AFHTTPSessionManager的封装步骤 1、根据不同的HTTP Method和不同的请求参数序列化方式,以及URL合成,从AFURLRequestSerialization...,NSURLSession提供了下面网络请求三种的API,返回三种不同的Task - (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest

    35510

    AFNetworking框架分析(二)——AFURLSessionManager(上)

    requestSerializer创建方法实现 其中最重要的部分,就是将request的各种属性进行遍历,用于给mutableRequest自带的属性赋值。...init方法中,AFN给上面指定的6个方法选择器每一个元素添加了KVO观察者 ?...小提示:关于NSNull,包含了唯一方法+(NSNull *)null,是一个对象,用于表示零值的单独对象。主要用于不能使用nil的场景下,例如可变数组中,想插入一个空对象的情况。...例如,之前的项目中当需要向后台传输一段用户的定位数据用于分析行动轨迹时,传参的字典中的location的key值嵌套了一个包含分别以经度和纬度为key的字典。 ?...,用于处理可能存在包含歧义或者不符合规划的字符(可以自行查找关于百分号编码相关资料),最后将字符串拼接"&"符号。

    2K40

    iOS AFNetworking 源码阅读一

    3.Reachability 提供了网络状态相关的接口,主要有以下核心类 AFNetworkReachabilityManager 4.Security 提供了安全性相关的接口,主要有以下核心类...AFSecurityPolicy 5.Serialization 提供了解析数据相关的接口,主要有以下核心类 AFURLRequestSerialization AFURLResponseSerialization...6.UIKit 提供了大量网络请求过程中与UI界面显示相关的接口,通常用于网络请求过程中提示,用户交互更加友好 AFNetworkActivityIndicatorManager UIActivityIndicatorView...get请求: AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]init]; [manager GET:@"http://get"...2.调用另外一个方法dataTaskWithRequest去拿到我们最终需要的NSURLSessionDataTask实例,并且在完成的回调里,调用我们传过来的成功和失败的回调。

    1.3K30

    iOS网络——AFNetworking AFURLSessionManager源码解析

    ,提供了更加便捷的接口来发起网络请求,所以本篇将详细讲解AFURLSessionManager是如何封装NSURLSession的,建议读者对照源码阅读。...首先看一下头文件的声明: //AFURLSessionManager类实现了NSURLSession相关的众多协议,用于帮助我们进行数据的处理 @interface AFURLSessionManager...,主要就是关联一个NSURLSessionTask并实现了相关任务的代理方法用于数据的获取、上传文件和下载文件。...需要注意的是NSURLSessionTask的delegate属性是只读的,只能在使用session创建task的函数中传入代理对象,而且通过源码也没有发现相关代理的设置,所以AFURLSessionManagerTaskDelegate...self) { return nil; } //如果没有指定session运行模式就使用默认的 if (!

    4.4K70

    iOS AFNetworking 源码阅读二

    接着上一篇iOS AFNetworking 源码阅读一继续往下讲 我们再回到AFHTTPSessionManager类中来,回到这个方法: - (NSURLSessionDataTask *)dataTaskWithHTTPMethod...接着调用了父类的生成task的方法,并且执行了一个成功和失败的回调,我们接着去父类AFURLSessionManger里看 - (NSURLSessionDataTask *)dataTaskWithRequest...//第二,为什么要用串行队列,因为这块是为了防止ios8以下内部的dataTaskWithRequest是并发创建的, //这样会导致taskIdentifiers这个属性值不唯一,因为后续要用...]; } ●这个方法主要就是把AF代理和task建立映射,存在了一个我们事先声明好的字典里。...AF没有用这个GCD组做任何处理,只是提供这个接口,让我们有需求的自行调用处理。如果有对多个任务完成度的监听,可以自行处理。 而队列的话,如果你不需要回调主线程,可以自己设置一个回调队列。

    1.7K20

    AFNetworking源码探究(二十) —— UIKit相关之AFImageDownloader图像下载

    AFImageDownloader 先看一下AFImageDownloader.h的接口 1....该块没有返回值,并且有三个参数: // 客户端发送的请求,从服务器收到的响应以及从请求响应数据创建的图像。 // 如果图像是从缓存中返回的,则响应参数将为nil。...// 该块没有返回值,并且有三个参数:客户端发送的请求, // 从服务器接收到的响应以及描述发生的网络或解析错误的错误对象。...This must be a unique identifier that does not represent any other request. // 用于为此请求创建的下载收据的标识符。...默认情况下,任何具有图像缓存中等效缓存图像的下载请求都将自动提供缓存图像表示。 2. AFImageDownloadReceipt 先看一个AFImageDownloadReceipt.h中的接口。

    93020

    iOS_AFNetworking 结构解析+用例分析+源码阅读

    AFHTTPSessionManager (子类) AFHTTPSessionManager继成自AFURLSessionManager,负责创建Get/Head/Post/Put/Patch/Delete...// backgroundWithID: 可以在程序 挂起、退出、崩溃 的情况下, 上传和下载任务, ID用于向任何可能在进程外恢复后台传输的守护进程(daemon)提供上下文 NSURLSessionConfiguration...) // 3.2 为dataTask添加taskDelegate (详情同 downloadTask 4.2) NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest...User-Agent:app的boundId/ID/版本, 设备型号/系统/尺寸 等 Authorization:提供 Basic Auth 认证接口,帮我们把用户名密码做 base64 编码后放入...一般我们请求都会按 key=value 的方式带上各种参数, GET 方法参数直接拼在 URL 后面,POST 方法放在 body 上, NSURLRequest没有封装好这个参数的序列化,只能我们自己拼好字符串

    58120

    iOS小技能:封装银联接口协议(收银台的订单退款、查询机制)【上篇】

    引言: 上篇:业务功能、退款接口的协议规则、请求 下篇:返回结果处理、测试技巧、常见问题处理方案 背景:如果商家平台侧服务出现问题,商家需要一个备选方案进行正常的收退款;因此在POS机新增一个开关进行切换支付通道...,当天可退款金额的收款金额,否则会转为退款中状态 主要开发任务: 1、对接条码支付前置订单申请退款接口 2、构造条码前置的退款中的订单,并根据查询接口修改订单状态(本地数据保留七天) 3、对接条码前置退款查询...的要求,我们可以再退款失败的订单详情新增一个重新发起退款入口 II 、退款接口的协议规则 采用UTF-8字符编码 2.1 数据格式 提交和返回数据都为XML格式,根节点名为xml 请求url:https...创建NSURLSessionDataTask AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];...:本文为CSDN博主「#公众号:iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

    99520
    领券