iOS面试题-AFNetworking、SDWebImage原理

AFNetworking:

AFNetworking主要是对NSURLSession和NSURLConnection(iOS9.0废弃)的封装,其中主要有以下类:
1). AFHTTPRequestOperationManager:内部封装的是 NSURLConnection, 负责发送网络请求, 使用最多的一个类。(3.0废弃)
2). AFHTTPSessionManager:内部封装是 NSURLSession, 负责发送网络请求,使用最多的一个类。
3). AFNetworkReachabilityManager:实时监测网络状态的工具类。当前的网络环境发生改变之后,这个工具类就可以检测到。
4). AFSecurityPolicy:网络安全的工具类, 主要是针对 HTTPS 服务。
5). AFURLRequestSerialization:序列化工具类,基类。上传的数据转换成JSON格式
(AFJSONRequestSerializer).使用不多。
6). AFURLResponseSerialization:反序列化工具类;基类.使用比较多:
7). AFJSONResponseSerializer; JSON解析器,默认的解析器.
8). AFHTTPResponseSerializer; 万能解析器; JSON和XML之外的数据类型,直接返回二进制数据.对服务器返回的数据不做任何处理.
9). AFXMLParserResponseSerializer; XML解析器;


SDWebImage:

  • SDWebImage 中为 UIImageView 提供了一个分类UIImageView+WebCache.h, 这个分类中有一个最常用的接口sd_setImageWithURL:placeholderImage:,会在真实图片出现前会先显示占位图片,当真实图片被加载出来后在替换占位图片
  • 加载图片的过程大致如下:
    • 首先会在 SDWebImageCache 中寻找图片是否有对应的缓存, 它会以url 作为数据的索引先在内存中寻找是否有对应的缓存
    • 如果缓存未找到就会利用通过MD5处理过的key来继续在磁盘中查询对应的数据, 如果找到了, 就会把磁盘中的数据加载到内存中,并将图片显示出来
    • 如果在内存和磁盘缓存中都没有找到,就会向远程服务器发送请求,开始下载图片
    • 下载后的图片会加入缓存中,并写入磁盘中
    • 整个获取图片的过程都是在子线程中执行,获取到图片后回到主线程将图片显示出来

iOS内存缓存和磁盘缓存的区别

  • 缓存分为内存缓存和磁盘缓存两种,其中内存是指当前程序的运行空间
    • 内存速度快容量小,是临时存储文件用的,供CPU直接读取,比如说打开一个程序,他是在内存中存储,关闭程序后内存就又回到原来的空闲空间;
    • 磁盘是程序的存储空间,缓存容量大速度慢可持久化与内存不同的是磁盘是永久存储东西的,只要里面存放东西,不管运行不运行 ,他都占用空间!磁盘缓存是存在Library/Caches。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,157评论 1 32
  • 1.设计模式是什么? 你知道哪些设计模式,并简要叙述?设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型...
    龍飝阅读 2,219评论 0 12
  • 《经济学人》这篇文章指出来,以往导致经济衰退的,主要是三个原因:第一个原因是制造业产能过剩、第二个是物价上涨、第三...
    我的邻居是腹黑阅读 47评论 0 0
  • ARC ARC是什么 ARC是iOS 5推出的新功能,全称叫 ARC(Automatic Reference Co...
    RY_zheng阅读 1,590评论 0 9
  • 我曾经看过一篇文章,说的是太重感情的人的种种“下场”。我不知道重感情的人是因为天生缺爱还是生性如此。我应该算是重感...
    江湖皆是好去处阅读 2,078评论 1 0