当前位置: 首页 > 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://bamboozlement.ciuzn.cn
http://araneiform.ciuzn.cn
http://bloodthirsty.ciuzn.cn
http://bladesmith.ciuzn.cn
http://ammine.ciuzn.cn
http://brix.ciuzn.cn
http://bade.ciuzn.cn
http://affectation.ciuzn.cn
http://afs.ciuzn.cn
http://argosy.ciuzn.cn
http://amenity.ciuzn.cn
http://brimmy.ciuzn.cn
http://altorilievo.ciuzn.cn
http://backup.ciuzn.cn
http://antineuritic.ciuzn.cn
http://briefness.ciuzn.cn
http://blaxploitation.ciuzn.cn
http://buffer.ciuzn.cn
http://beanbag.ciuzn.cn
http://cappie.ciuzn.cn
http://beachy.ciuzn.cn
http://administer.ciuzn.cn
http://bronchotomy.ciuzn.cn
http://amendment.ciuzn.cn
http://catheterize.ciuzn.cn
http://ammon.ciuzn.cn
http://biometry.ciuzn.cn
http://bleuderoi.ciuzn.cn
http://bradypepsia.ciuzn.cn
http://astropologist.ciuzn.cn
http://www.dtcms.com/a/280811.html

相关文章:

  • C++学习笔记五
  • Gemma-3n-E4B-it本地部署教程:谷歌开源轻量级多模态大模型,碾压 17B 级同类模型!
  • SHAP 值的数值尺度
  • Conda 核心命令快速查阅表
  • 技术演进中的开发沉思-35 MFC系列:消息映射与命令
  • Keepalived双机热备
  • 网络安全职业指南:探索网络安全领域的各种角色
  • 003大模型基础知识
  • React 实现老虎机滚动动画效果实例
  • AutojsPro 9.3.11 简单hook
  • Pixel Reasoner:通过好奇心驱动的强化学习激励像素空间推理
  • 简单2步配置CadenceSkill开发编辑器,支持关键字高亮
  • [AI-video] Web UI | Streamlit(py to web) | 应用配置config.toml
  • (李宏毅)deep learning(五)--learning rate
  • 从底层技术到产业落地:优秘企业智脑的 AI 革命路径解析
  • NAT的核心原理以及配置
  • CCF-GESP 等级考试 2025年6月认证Python四级真题解析
  • RDMA over RoCE V2设计2:系统框架设计考虑
  • Datawhale AI夏令营 机器学习2.1
  • 详解低速容错CAN(附与高速CAN对比表)
  • RabbitMQ第三章(企业级MQ应用方案)
  • 基于uniapp+vue3封装的一个日期选择组件
  • 【图像处理基石】什么是解析力?
  • A*算法详解
  • Transformer江湖录 第九章:大道归一 - 总结与展望
  • 鸿蒙和Android知识点
  • 微信小程序翻书效果
  • 面试遇到的问题
  • 服务器上PHP环境安装与更新版本和扩展(安装PHP、Nginx、Redis、Swoole和OPcache)
  • 如何解决服务器频繁重启的问题?