iOS知识点

iOS-常用框架解读

2019-01-31  本文已影响0人  木子奕
架构:框架.png

一、框架&架构作用

二、图片缓存框架

怎样设计一个图片缓存框架?

image.png

2.1 图片读写

图片通过什么方式进行读写,过程怎样的?

image.png

读取流程

2.2 内存设计

内存的设计上需要考虑哪些问题

2.3 磁盘设计

磁盘设计需要考虑哪些问题?

2.4 网络部分的设计

网络部分的设计需要考虑哪些问题?

2.5 图片解码

对于不同格式的图片,解码采用什么方式?

在哪个阶段做图片解码处理?

磁盘读取后或者网络请求后。

三、时长统计框架

怎样设计一个时长统计框架?


image.png

记录器 基于不同的场景提供关于记录的封装、适配。一般分为页面式,流式,自定义式。

记录管理者 管理统计记录数据,包含记录缓存,磁盘存储,上传器。

如何降低数据的丢失率? 两种解决方案:

记录上传的时机

上传时机的选择

四、复杂页面架构设计案例

从三个方面分析架构设计:整体架构、数据流、反向更新。

4.1 整体架构

image.png

4.1.1 视图层(View&ViewController)

View的功能包含:控件的初始化、设置数据、交互事件代理等。 ViewController的功能:视图创建与组合、协调逻辑、事件回调处理等,事件回调处理指的是视图层的事件。

4.1.2 业务逻辑层(ViewModel)

业务逻辑处理(预排版)、数据增删改查封装者、线程安全处理(保证数据刷新和用户手动更新数据的数据同步)。

4.1.3 数据层 (Engine & Model)

网络请求、数据解析、增删改查、本地处理逻辑(适配)

4.2 数据流

数据流包含:网络数据、业务数据、UI数据三部分。 网络数据经过Engine层处理加工产生业务数据,业务数据经过ViewModel层处理产生UI数据,UI数据会转交给视图控制器控制视图的显示。

image.png image.png image.png image.png image.png

业务数据强引用网络数据和UI数据,同时UI数据通过弱引用找到业务数据。

4.3 反向更新

image.png

用户交互网络刷新等都会导致视图层变化,通过代理方式通知视图控制器。控制器对ViewModel的强引用找到对应ViewModel,然后通过UI数据对业务数据的弱引用找到对应的业务数据同时打上脏标记(借鉴系统UIView更新机制的思想)。最后ViewModel进行数据流的重新驱动,将脏数据重新处理生成新的UI数据更新视图。

4.4复杂页面架构设计中设计思想总结

image.png image.png image.png

五客户端的整体架构

image.png

首先由独立于APP的通用层,包括网络请求,页面浏览时长统计,崩溃统计,位置定位等基本功能和常用的第三方库。第二层是公司的通用业务层,包括分享,支付和通用的为通用业务封装的分类。第三层是中间层,负责向上层的具体业务提供接口和具体业务间的通信。
具体业务间的通信方式

上一篇 下一篇

猜你喜欢

热点阅读