iOS面试题之第三方框架(ios面试题目及答案)

  1、AFNetworking 底层原理分析  AFNetworking主要是对NSURLSession和NSURLConnection(iOS9.0废弃)的封装,其中主要有以下类:  1). AFHTTPRequestOperationManager:内

本文最后更新时间:  2023-05-16 23:38:56

  1、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解析器;

  2、描述下SDWebImage里面给UIImageView加载图片的逻辑

  SDWebImage 中为 UIImageView 提供了一个分类UIImageView+WebCache.h, 这个分类中有一个最常用的接口sd_setImageWithURL:placeholderImage:,会在真实图片出现前会先显示占位图片,当真实图片被加载出来后再替换占位图片。

  加载图片的过程大致如下:

  1.首先会在 SDWebImageCache 中寻找图片是否有对应的缓存, 它会以url 作为数据的索引先在内存中寻找是否有对应的缓存

  2.如果缓存未找到就会利用通过MD5处理过的key来继续在磁盘中查询对应的数据, 如果找到了, 就会把磁盘中的数据加载到内存中,并将图片显示出来

  3.如果在内存和磁盘缓存中都没有找到,就会向远程服务器发送请求,开始下载图片

  4.下载后的图片会加入缓存中,并写入磁盘中

  5.整个获取图片的过程都是在子线程中执行,获取到图片后回到主线程将图片显示出来

  SDWebImage原理:

  调用类别的方法:

  1. 从内存(字典)中找图片(当这个图片在本次使用程序的过程中已经被加载过),找到直接使用。

  2. 从沙盒中找(当这个图片在之前使用程序的过程中被加载过),找到使用,缓存到内存中。

  3. 从网络上获取,使用,缓存到内存,缓存到沙盒。

  3、友盟统计接口统计的所有功能?

  APP启动速度,APP停留页面时间等

温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。