思路:将网络、本地存储等封装成基础组件,将用户、活动等封装成业务组件.然后将这些组件使用cocoapods 私有库集成,在主项目中pod install进行使用.
组件间通讯:使用roter或者抽出来一个专门用来通信的类.
- 图片缓存
内存缓存 磁盘缓存 网络下载
图片解码/图片压缩.解压缩
图片是通过什么方式进行读写?以及它的过程
以图片的url的单向hash作为key
先去内存,然后磁盘查找,然后网络下载.
内存的设计:
存储的Size: 10kb的最多能存储50个 100kb的存20个
淘汰策略: LRU算法:最近最久未使用算法,对比时间
磁盘的设计:
存储方式:
大小限制:
淘汰策略: 存储时间距离今天7天
网络下载:
图片下载的最大并发量
请求优先级
请求超时策略 - 阅读时长统计框架
记录器:页面式的记录场景、流式页面的记录场景、自定义式
记录管理者:记录缓存、磁盘缓存、上传器
延时上传:前后台切换、从无网到有网、轻量接口捎带 - 复杂页面架构
网络层、业务层、数据层
facebook开源的asyncDisplayKit预排版 - rn数据流思想:视图组合可以看成一颗多叉树,互动的页面数据传递到根节点,然后又根节点往下分发询问是否要更新视图.
-
客户端整体架构
openurl 依赖注入(中间层)