文件加载与保存及键值编码技术解析
1. 文件加载与保存
在处理文件加载和保存时,有两种主要技术:属性列表(plists)和对象编码。
属性列表数据类型是一类知道如何自行加载和保存的类。如果拥有的对象集合都是属性列表类型,就可以使用便捷函数将它们保存到磁盘并读取回来。
对于非属性列表类型的自定义对象,可以采用NSCoding协议并实现编码和解码方法。通过这种方式,能将自定义对象转换为NSData,进而保存到磁盘,后续再读取并重构对象。
编码和解码的操作示例如下:
freezeDried = [NSKeyedArchiver archivedDataWithRootObject: thing1];
thing1 = [NSKeyedUnarchiver unarchiveObjectWithData: freezeDried];
NSLog (@"reconstituted multithing: %@", thing1);
若编码的数据中存在循环引用,比如 thing1 在其自身的 subThingies 数组中,Cocoa的归档器和解档器能够巧妙处理,确保对象循环可以被保存和恢复。不过,测试时不要使用 NSLog 打印 thing1 ,因为 NSLog 无法检测对象循环,会导致无限递归。
2. 键值编码(KVC)
键值编码(KVC)是一种间接改变对象状态的
超级会员免费看
订阅专栏 解锁全文
168万+

被折叠的 条评论
为什么被折叠?



