iOS开发 缓存

一.为什么要使用缓存?
两点原因吧:

  1. 服务器:避免每次都去请求服务器,减少服务器压力。
  2. 客户端:减少了网络请求次数,节省了流量,提高了客户端的体验。

二.缓存方式。

  1. 内存缓存:内存缓存具有速度快容量小的特点,主要用来存储临时文件,供手机的CPU直接读取。内存是指程序的运行空间,比如打开一个程序,他就会占用一定容量的内存,当程序关闭的时候这部分内存又会被释放回收。iOS的内存分区按低地址到高地址依次为:代码区(存储代码)、常量区(存储常量)、全局区(又称静态区,存储全局变量和静态变量)、堆区(存储自己创建的对象,手动管理)、栈区(存储局部变量,以及用作函数跳转时候的现场保护,系统管理)。
    在这里插入图片描述
  2. 磁盘缓存。
    (1)沙盒:iOS只允许在本应用所在的文件系统中读取文件,不能垮应用读取。所有的非代码文件都保存于此,比如视频、图片、声音、属性列表、文本文件等。默认情况下,每个沙盒有三个文件夹:documents、library和tmp.
    a.Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录。一般情况下,用户自己在移动端生成的需要备份的相对重要的文件保存在Documents中,比如用户自己写的日记或者记的帐。
    b. Library:存储程序的默认设置或其它状态信息;Library/Caches:iTunes不会备份此目录,此目录下文件不会在应用退出删除,一般用来保存体积大并且不需要备份的非重要数据。一般情况下,用户从服务器下载的文件保存在library/caches中,比如用户缓存的视频。Library/preferences: 通常用来存储一些基本的软件配置信息, 比如记住密码、自动登录等。iTunes同步设备时会备份该目录, 应用程序重新启动不会丢弃数据。我们使用 NSUserDefaults写的设置数据都会保存到该目录下的一个plist文件中,这就是所谓的写到plist中!
    c.tmp:提供一个即时创建临时文件的地方, iTunes不会备份此目录。
    (2)数据持久化方式:常用的数据持久化方式有Plist、NSUserDefault、归档、sqlite、coreData等。
    a. plist:通过XML的方式把特定的类(NSArray、NSDictionary、NSString、NSDate、NSData、NSNumber)保存在目标目录中。常用的方法有可视化读取和代码读取两种,其中代码读取主要用到以下两个方法:writeToFile:automatically和dictionaryWithContentOfFile:。
    b. NSUserDefault:它除了能保存Plist可以保存的那些特定类之外,它还可以保存OC基本数据类型,但是不能保存自定义对象。常用方法有:setObject:forKey:和objecrtForKey:。
    c.归档NSKeyedArchiver:不管是plist还是NSUserDefault都没办法对自定义对象进行持久化操作,但归档可以。我们需要做的就是让自定义类遵循NSCoding协议,并实现他的两个协议方法:initWithCoder:和encodeWithCoder,然后在进行解归档的地方初始化NSKeyedArchiver对象,调用解归档方法进行解归档。
    d.sqlite其实就是一些C语言的数据库语句,比如sqlite3_open数据库打开语句,sqlite3_exec()数据库执行语句。
    e.coreData:coreData是iOS5之后苹果推出的数据持久化框架,其提供了ORM的功能,将对象和数据相互转换。其中,它提供了包括sqlite、xml、plist等本地存储文件,默认使用sqlite进行存储。coreData具有两个模型:关系模型和对象模型,关系模型即是数据库,对象模型为OC对象。主要就是牵扯到数据模型和对象模型的相互转化。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值