对对象进行归档
- 使对象遵守
NSCoding协议 - 实现对象的
encodeWithCoder:方法,在该方法中调用[aCode encodeObject:forKey]方法来保存需要保存的数据 - 调用
NSKeyedArchiver的archiveRootObject:toFile:方法,传入需要归档的文件,和归档的目标位置
</br>
解档
- 使对象遵守
NSCoding协议 - 实现对象的
initWithCoder:方法,在该方法中调用[aDecoder decodeObjectForKey:方法解析所需的属性 - 调用
NSKeyedUnarchiver的unarchiveObjectWithFile:方法进行解档
</br>
注意事项
- 如果归档时,所存的属性中包含自定义的对象,则这些自定义的对象也需要遵循
NSCoding协议,并实现encodeWithCoder:方法 - 如果解档时,解析的属性中包含自定义的对象,则这些自定义的对象也需要遵循
NSCoding协议,并实现initWithCoder:方法 - 在
initWithCoder:方法中,只有当父类遵守了NSCoding协议时,才能使用[super initWithCoder:]方法 - 对于UIView以及其子类,
initWithCoder:方法先于awakeFromNib方法调用。前者在解析文件、子控件还未加载时调用,后者在子控件全部加载完毕后调用。