6归档

(书中的定义)归档就是用某种格式来保存一个或多个对象,以便以后还原这些对象

(复杂的说法)面向对象的程序在运行的时候会创建一个复杂的对象图,经常要以二进制的方法序列化这个对象图,这个过程叫做Archiving. 二进制流可以通过网络传输或写入文件中。也就是序列化和反序列化的过程,因此有编码和解码的过程。


一般有两种归档的方式:属性列表(XML文件,plist文件)和带键值的编码

1.属性列表以键值对的形式存储数据。键一定是NSString对象,值可以是NSString,NSArray,NSDictionary,NSData,NSDate,NSNumber对象。

这种方式缺点是首先受到保存对象类型的限制,其次保存的对象并没有保存对应的类,以及引用次数等类的信息,所以保存的对象信息有限(不能重建类图)

2.使用NSKeyedArchiver归档.

使用这种方式的前提是类实现了NSCoding协议中的encodeWithCoder:(NSCoder *)encoder方法和initWithCoder:(NSCoder *)decoder方法。

oc基本的类对象都做了实现。自定义的类需要自己实现。

编码方法的内容就是指定如何保存类的所有实例变量,包括实例变量名称-内存大小-编码名称。

解码方法和编码是一个反向的过程。总的说来就是对象《-》二进制流之间的序列化和反序列化

(1)1个对象-编码类-1个文件                                                        一个对象存入一个文件

(2)多个对象-1个编码对象-1个NSData数据区-1个文件            多个对象编码后存入一个文件


3.通过归档复制对象

对象通过编码->data->解码得到对象  通过编码可以创建对象的完全复制(多层深复制)   







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值