[iOS开发]数据的缓存以及在程序中的处理机制0

关于数据的缓存,网上的资料和博客很多,总的来说五种方法,plist,写文件,NSUserDefaults,FMDB等操作数据库以及苹果自家的coreData,这些如何如何使用,资料文档很多,这里不想多说。
主要想说的是在程序中如何使用它们,用来缓存程序中的数据。直接说现在我正在用的处理方法。

首先,数据可以分为这几类,一类是用户主动下载的视频音乐之类的,这些文件相对很重要,一般存在Documents里面,当然,我没做过视频音乐下载类的应用,这方面的处理还有实际用过,这里就不说明。
另一类的数据就是在用户界面展示的数据,通过网络请求封装到模型里面展示在UI上的数据,这类数据也可以分两种,一种是主界面的数据,另一种是二级页面甚至更深层级的页面的数据。

首先说这两类数据的区别,主界面的数据一般下次进入程序,需要显示上次退出前的数据,而二级页面的数据,只需要缓存在内存中,保证进入后刷新,跳转返回后再进去先显示之前的数据再刷新,程序退出再进去时,不需要显示上次的数据。
简单点说,就是主界面的数据缓存要存在程序的若干个生命周期中,每次更新。而二级页面的缓存数据只需要存在于程序的一个生命周期中。这是目前我的处理逻辑,主界面的数据的重要性大于二级界面,因为用户每次进app看到一片空白体验很差,二级界面则不需要。

再来说具体这两种数据存在哪里。主界面的数据由于需要存在多个程序的生命周期中,所以需要存在沙盒中,我现在的处理就是需要缓存的模型遵循NSCoding协议,以文件的形式存入tmp文件夹,当然如果你觉得缓存相对重要,也可以存到Library/Caches文件夹中。
二级界面以及更深界面的数据,我处理的方式是数据缓存在NSCache中,自建一个NSCache的单例,专门用来缓存这些数据。当收到系统内存警告时,会自动清空。跟上面的temp文件夹类似,系统会自动管理。

详细流程图如下:

[iOS开发]数据的缓存以及在程序中的处理机制0_第1张图片
流程图.001.jpeg

小提醒Tip:
更新版本更改版本号的时候,最好做一个判断,如果程序更新了版本,最好清空之前缓存的主界面的数据,不然如果模型有改动,可能会造成程序崩溃。

这算是一个大纲吧,具体代码整理之后我会封装一个数据缓存的demo,会在之后的文章中介绍。
大家有兴趣可以多多支持我的其它文章
传送门

你可能感兴趣的:([iOS开发]数据的缓存以及在程序中的处理机制0)