已经有一个关于解码的类似问题的类似问题,但我想尝试总结一下,看看我是否得到了正确的全貌。
基本上,Apple 提供了 NSCoder 类,如果它是 NSCoding 类的子类,则它允许对对象进行编码和解码。
从该类继承允许使用 Apple 提供的 NSCoder 编码和解码函数,这些函数允许“序列化”NSDataTypes(以及所有原始 C 结构和数据类型)。
我对 NSCoder 类引用的理解是 encodeObject 函数能够检测我们传递的对象类型,从而以正确的方式对其进行序列化。
Instaed,当使用特定类型的 int(例如 int 64)时,Apple 决定提供一个特定功能,因为理解数据的“签名”并不是那么简单(我猜在低级内存中 int64 与 int 相对相似as 是原始数据类型,因此没有 NSObject “签名”,Apple 可以从中对数据类型进行逆向工程)。
我的理解正确吗?有人有不同的解释吗?
我还想请教您对“ encodeRootObject ”函数的用法的更多解释。参考资料不多,我从一些代码示例中看到了。我知道archiveRootObject 用于实际保存对象,但我什么时候应该使用encodeRootObject?当我尝试对我定义的类的对象进行编码时,是否会使用它?