iOS开发涉及的架构&框架

客户端整体架构

1 独立于App的通用层(时长统计 网络请求 )
2 通用业务层(本公司通用的组件等)
3 中间层(用于解耦)
4 业务层

复杂页面架构

一、MVVM框架思想
二、ReactNative数据流思想

在判定哪个View需要更新时先根据二叉树反向回到根节点,再由根节点自顶向下的遍历来判定哪个节点需要更新

三、系统UIView的更新机制思想
四、FaceBook的开源框架AsyncDisplayKit关于预排版的设计思想

图片缓存

一、图片读写

以图片URL的单向Hash值作为Key

二、内存设计

内存设计需要考虑以下几个问题:
1 内存存储的大小
(例如 10k以下的图片存储100张 10k-50k存储50张 50k以上的存储10张),应对其大小做限制,不能在内存中无限存储图片)
2 淘汰策略
(1. 队列先进先出FIFO的方式淘汰)
(2. LRU算法[又称为最近最久未使用算法 使用双向链表来实现(之所以使用双向链表不使用单向链表是为了方便对期中摸个节点的删除操作)])(LRU算法详解)

三、磁盘设计

磁盘设计需要考虑以下几个问题:
(1. 存储方式)
(2. 大小限制 如100M)
(3. 淘汰策略 如存储时间超10天)

四、网络设计

网络设计需要考虑以下几个问题:
(1. 图片请求的最大并发量)[如何设计???待完善]
(2. 图片请求的超时策略)[如何设计???待完善]
(3. 请求优先级)[如何设计???待完善]

附带--图片解码

1 对于不同格式的图片解码应用策略模式(???待完善)对不同的图片格式进行解码
2 哪个阶段做图片的解码处理(1 磁盘读取之后 2 网络请求返回之后)

附带--线程处理

在图片缓存框架中如何考量线程的相关使用及处理 [如何设计???待完善]

阅读时长统计

时长统计框架的设计

一、记录器

1 页面式
2 流式
3 自定义式

二、记录管理者

1 记录缓存(如何处理记录数据的丢失 1 定时写入磁盘 2 限定内存缓存条数[如限制10条 超过该条数则立即写入磁盘])
2 磁盘存储
3 上传器(1 延时上传 2 立即上传 3 定时上传)

你可能感兴趣的:(iOS开发涉及的架构&框架)