当前位置: 首页 > news >正文

iOS高级开发工程师面试——常见第三方框架架构设计

iOS高级开发工程师面试——常见第三方框架架构设计

  • 一、SDWebImage
    • 1. SDWebImage 组织架构:
    • 2. SDWebImage 图片加载流程:
  • 二、AFNetWorking
    • AFNetWorking 组织架构:主要有5个模块

一、SDWebImage

1. SDWebImage 组织架构:

在这里插入图片描述
SDWebImageDownloader :负责维持图片的下载队列;
SDWebImageDownloaderOperation:负责真正的图片下载请求;
SDImageCache:负责图片的缓存;
SDWebImageManager:是总的管理类,维护了一个SDWebImageDownloader 实例和一个 SDImageCache 实例,是下载与缓存的桥梁;
SDWebImageDecoder:负责图片的解压缩;
SDWebImagePrefetcher:负责图片的预取;
UIImageView+WebCache:和其他的扩展都是与用户直接打交道的。

2. SDWebImage 图片加载流程:

在这里插入图片描述

  1. 判断图片URL 是否为 nil,是则做出错处理并返回;
  2. URL MD5加密生成 key;
  3. 根据 key 读取内存(memory)缓存, 有则拿到图片返回,否则往下;
  4. 根据 key 读取磁盘(disk)缓存,有则拿到图片返回,否则往下;
  5. 根据URL 下载图片,下载成功则将图片保存到 内存和磁盘中返回图片

二、AFNetWorking

AFNetWorking 组织架构:主要有5个模块

  1. AFHTTPSessionManager :是对 NSURLSession 的封装,负责发送网络请求,是 AFNetWotking 中使用最多一个模块

  2. AFNetworkingReachabilityManager :实时监测网络状态的工具类

  3. AFSecurityPolicy :网络安全策略的工具类,主要是针对于 Https 服务

  4. Serializstion :请求序列化工具类

    • AFURLRequestSerialization:请求入参序列化工具基类

    • AFURLResponseSerialization :请求回参序列化工具基类

      • AFJSONResponseSerializer : Json 解析器,
      • AFNetWorking 的默认解析器
      • AFXMLParserResponseSerializer :XML 解析器
      • AFHTTPResponseSerializer : 万能解析器,直接返回二进制数据(NSData),服务器不会对数据进行处理
  5. UIKit : 对iOS UIKit 的扩展
    5.1. AFNetworking 2.x怎么开启常驻子线程?为何需要常驻子线程?
    在 2.x 版本中 AFNetWorking 通过 RunLoop 开启了一个常驻子线程,具体代码是这样的

+ (void)networkRequestThreadEntryPoint:(id)__unused object { {[[NSThread currentThread] setName:@"AFNetworking"
http://www.lryc.cn/news/588994.html

相关文章:

  • ESP32S3+VSCode+PlatformIO+Arduino+Freertos开发入门指南:基于Arduino框架的应用开发全流程
  • 基于LAMP环境的校园论坛项目
  • 新手向:Python数据处理Excel报表自动化生成与分析
  • 剑指offer62_骰子的点数
  • 为什么市场上电池供电的LoRa DTU比较少?
  • [Pytest][Part 5]单条测试和用例集测试
  • MMYSQL刷题
  • CAU数据挖掘 第五章 聚类问题
  • 【canal+mysql+example+数据验证测试】
  • Python 内置函数random
  • 行为模式-状态模式
  • 小智完整MCP交互流程(以调节音量为例)
  • 网络安全职业指南:探索网络安全领域的各种角色
  • 使用llama-factory进行qwen3模型微调
  • elasticsearch 下载/安装
  • MaxKB使用笔记【持续ing】
  • python+selenium UI自动化初探
  • JAVA高级第一章 集合框架和泛型(一)
  • Ubuntu18.04 系统重装记录
  • 写作词汇积累(A):自洽、自恰、恰如其分、恰当
  • MQ2烟雾传感器模块(第九天)
  • C++学习笔记五
  • 《时间简史》:窥探宇宙的奥秘
  • IOS 18下openURL 失效问题
  • 032_API参考文档
  • 前端面试专栏-工程化:25.项目亮点与技术难点梳理
  • 区块链的三种共识机制——PoW、PoS和DPoS原理
  • 数据库第二次作业
  • 【Python练习】044. 编写一个函数,实现快速排序算法
  • 本地电脑安装Dify|内网穿透到公网