iOS面试 第三方库
返回上级目录:iOS面试专题一
文章目录
- 1.AFNetworking: iOS客户端的第三方网络框架
- 源码解析
- dataTask
- 2.SDWebImage:一个异步下载图片并且支持缓存的框架
- 问:怎样设计一个图片缓存框架,框架/架构章节,高级资深iOS
- 3.ReactiveCocoa(RAC)
- 3.1 信号
- 源码解析
- RACSignal.m
- RACDynamicSignal.m
- RACReturnSignal.m
- 3.2 订阅: RACSubscriber
- 源码分析
- 4.AsyncDisplayKit:提升iOS界面渲染性能的一个框架
- 面试总结
1.AFNetworking: iOS客户端的第三方网络框架
AFNetworking - Github
- UIKit集成模块:UIKit原生控件分类的添加
- 核心类 :AFURLSessionManager
- AFHTTPSessionManager: 继承自AFURLSessionManager的子类
- AFSecurityPolicy: 网络安全,网络证书的校验,公钥的一些验证
- AFNetworkReachabilityManager: 网络连接监听
- NSURLSessionDelegate: 重定向,认证挑战的处理
源码解析
- key-value参数序列化
dataTask
2.SDWebImage:一个异步下载图片并且支持缓存的框架
iOS-SDWebImage史上最详细介绍
问:怎样设计一个图片缓存框架,框架/架构章节,高级资深iOS
SDWebImage - Github
- UIImageView的分类
- 核心类: SDWebImageManager
- 图片对应的key
3.ReactiveCocoa(RAC)
ReactiveCocoa - Github
- 继承自RACStream,RACStream有几个方法empty,return… 这些函数都是抽象函数,我们不能直接使用。在此之上,RACStream的分类,operation中提供了比较实用的具体的方法,如:map,take… 。上面的函数(map)是对下面抽象函数(empty)的不同的组合逻辑,就产生了这么多的其他功能。我们对不同的RACSignal(RACDynamicSignal,RACReturnSignal),他们有empty,return,bind方法的具体实现。调用不同信号的map,take方法,产生的是不同的功能逻辑。而这些都是基于这些抽象方法,所产生的一些更具备功能性的一些函数
3.1 信号
- 由1切到2状态
- 什么是信号? 他是代表一连串的状态这么样的一个类的封装,具体涉及到RACSignal有不同的子类
源码解析
RACSignal.m
- createSignal方法返回的是一个具体的子类RACDynamicSignal,但是对于我们外界使用来说看到的都是RACSignal
- 实际上RAC函数响应式编程,这里涉及到一个非常重要的设计模式“类簇设计模式”。我们通过这种方法创建的信号,或者说理解为工厂,或者说抽象工厂。那么返回的对象都是一个抽象的对象。但实际上是通过不同的方法创建出来的具体对象也不同
RACDynamicSignal.m
- 动态信号(RACDynamicSignal),createSignal的实现,实际上就是把传递进来的block参数(didSubscribe),作为信号的一个成员变量,保存下来,然后就进行一个简单的返回,当然这里也设置了一个信号的名称的标识
RACReturnSignal.m
3.2 订阅: RACSubscriber
- 成员变量持有block: didSubscribe
- 执行内部保存的block
源码分析
- 打印: 3
- RACReturnSignal.m
- RACSignal.m
- RACSubscriber.m
- RACSubscriber.m
4.AsyncDisplayKit:提升iOS界面渲染性能的一个框架
AsyncDisplayKit - Github
- 今日头条,新浪微博
- 减轻主线程的压力,能挪到子线程就挪到子线程
- 把下面要处理的问题放在子线程
- UIView是CALayer的delegate, CALayer是UIView的一个成员变量
- ASNode的成员变量.view UIView的成员变量.node
面试总结
- SDWebImage: 图片缓存删除的策略: 最近最就未使用的算法LRU(Least Recently Used)的运用
- ASDK: 封装了一个ASNode结点,对视图属性的设置都转成对ASNode的设置,这一部分可以放在后台线程中去实现。然后我们在合适的时机,也就是runloop快要结束的时候,接收通知,提取全局容器中对应的ASNode,然后在一次性设置给UIView
iOS面试 第三方库相关推荐
- iOS 常用第三方库及插件
//菜单切换 https://github.com/pujiaxin33/JXCategoryView //各种导航栏样式 https://github.com/rickytan/RTRootNavi ...
- iOS CocoaPods第三方库加载本地文件或服务器上的zip文件(二)
本篇文章重点介绍,如何加载zip文件压缩包第三方库.如果伙伴们想了解如何加载本地文件请自行翻看上篇文件. 方案: 不废话,直接上代码!编辑我们的WechatOpenSDK.podspec文件: Pod ...
- iOS常用第三方库大全,史上最全第三方库收集
下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITableVie ...
- IOS常用第三方库《转》
UI 动画 网络相关 Model 其他 数据库 缓存处理 PDF 图像浏览及处理 摄像照相视频音频处理 响应式框架 消息相关 版本新API的Demo 代码安全与密码 测试及调试 AppleWatch ...
- iOS 开发第三方库全集
下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITableVie ...
- Mac安装ruby环境及Xcode安装cocoapods整体流程--ios引用第三方库的环境准备
发文原由:ios刚用来开发不久,需要在开发时引用第三方库,百度查找了资料,需要先安装ruby环境,再进行cocoapods安装 一.mac安装ruby环境 (引用博客–https://www.cnbl ...
- iOS常用第三方库汇总
一:第三方插件 1:基于响应式编程思想的oc 地址:https://github.com/ReactiveCocoa/ReactiveCocoa 2:hud提示框 地址:https://github. ...
- iOS常用第三方库之Masonry
有更新,请往最下边查看. 一.前言 关于苹果的布局一直是我比较纠结的问题,是写代码来控制布局,还是使用storyboard来控制布局呢?以前我个人开发的时候很少使用代码去写约束,因为太麻烦了.所以最终 ...
- 【iOS高级资深工程师面试篇】⑫、2022年,金九银十我为你准备了《iOS高级资深工程师面试知识总结》 第三方库部分 AFNetworking-SDWebImageView-ReactiveCocoa
iOS高级资深工程师面试篇系列 - 已更新3篇 UI部分1/3 -UITableView-事件传递&视图响应 UI部分2/3 -图像显示原理-UI卡顿&掉帧 UI部分3/3 -UIVi ...
- iOS 常用的几个第三方库
网络通信 1.ASIHTTPRequest 这是一个经典的老库,功能完全而强大,但已经停止更新很久了(iOS5.0停止更新,但是我最近看github上这个项目有新改动).在不同iOS版本上略微有一些小 ...
最新文章
- javafx官方文档学习之二Scene体系学习一
- 缓存 Memached
- Pycharm中Python3连接Oracle
- python3安装步骤
- vs 构建linux 项目,使用Linux上的Mono构建VS 2017 MSBuild csproj项目
- c++ 绘制函数图像_图像轮廓和分水岭算法
- MFC中的几个常用类——CFileDialog
- 蓝桥杯2016年C/C++ 混搭
- vue动态添加style样式
- 奇安信RSA观察|RSAC应用安全技术新风向
- USACO 2.1 海明码(DFS)
- 拓端tecdat|R语言解释生存分析中危险率和风险率的变化
- layui 监听表单提交form.on(‘submit(sub)‘,function (){}) ajax请求失败问题
- 学习Java技术Eclipse版本的选择
- 技嘉主板bios设置方法
- GD32F103快速替换STM32F103
- linux禁止程序访问网络,linux内核强制访问控制--Apparmor
- 花生壳 内网穿透配置
- 2021-1-1今日新闻简报 每天精选12条最新时事热点新闻摘要和1条微语
- redis的雪崩和穿透