Dan*_*ark 6 serialization archiving nskeyedarchiver
iOS文档区分"序列化"和"归档".这是一般性的区别(即,在其他语言中保存)还是特定于Objective-C?另外,这两者有什么区别?
我实际上试图从IOS的角度寻找他们的不同之处.为感兴趣的人添加以下内容:
目的:
存档用于存储对象图.完整的数据模型可以轻松存档和恢复.Nib文件的工作方式可以视为归档的示例.
序列化用于存储任意对象层次结构.
wat plist文件工作可以被视为序列化的示例.
差异(摘自Archives编程指南):
"存档保留了图形中每个对象的身份以及它与图形中所有其他对象的所有关系."
跟踪在rootObject调用的上下文中编码的每个对象.如果要求编码器多次编码对象,则编码器编码对第一编码的引用,而不是再次编码对象.
"序列化只保留对象的值及其在层次结构中的位置.对同一个值对象的多次引用可能会在反序列化时产生多个对象.不保持对象的可变性."
实现差异:
任何实现NSCoding协议的对象都可以归档,因为只有NSArray,NSDictionary,NSString,NSDate,NSNumber和NSData(及其某些子类)的实例可以被序列化.数组和字典对象的内容也必须只包含这几个类的对象.
何时使用:
属性列表(序列化)应该用于主要由字符串和数字组成的数据.当与大块二进制数据一起使用时,它们效率非常低.
存档除plist对象以外的对象或存储大块数据是值得的.
这是一个是另一个(但不是全部)时间的情况.
维基百科有关于序列化的说法:
"序列化是将数据结构或对象转换为位序列的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链接传输,以便稍后在相同或另一个计算机环境中"复活" "
因此,归档可能只是序列化,但也可能是序列化和压缩的组合.或者它可能会添加某种标题信息.因此序列化是一种存档形式,但存档不一定是序列化.
这并不是特定于iOS的 - 这些术语遍布各地.但是,它们在iOS环境中的特定含义可能非常具体.
| 归档时间: |
|
| 查看次数: |
2624 次 |
| 最近记录: |