gpt4 book ai didi

cocoa - NSCoder vs NSDictionary,什么时候用什么?

转载 作者:行者123 更新时间:2023-12-03 16:05:05 25 4
gpt4 key购买 nike

我想弄清楚如何决定何时使用 NSDictionary 或 NSCoder/NSCoding?

对于一般属性列表来说,NSDictionary 似乎是生成可在应用程序外部轻松编辑的 XML 文件的简单方法。

当处理保存数据的自定义类或可能嵌套在其中的其他自定义类时,NSCoder/NSCoding 似乎是更好的路线,因为它会逐步遍历所有包含的对象类,并在归档命令时对它们进行编码用过的。

NSDictionary 似乎需要更多的工作才能将所有属性或数据特征获取到单个级别才能保存它,其中 NSCoder/NSCoding 会自动编码实现 NSCoding 接口(interface)的嵌套自定义类。

除了它是二进制数据并且在应用程序之外不可编辑之外,还有真正的理由使用其中一种吗?沿着这些思路,是否有一个指标表明您应该在两者之间采取哪种方式?我是否遗漏了一些明显的东西?

最佳答案

Apple 关于 object graphs 的文档有这样说:

Mac OS X serializations store a simple hierarchy of value objects, such as dictionaries, arrays, strings, and binary data. The serialization only preserves the values of the objects and their position in the hierarchy. Multiple references to the same value object might result in multiple objects when deserialized. The mutability of the objects is not maintained.

Mac OS X archives store an arbitrarily complex object graph. The archive preserves the identity of every object in the graph and all the relationships it has with all the other objects in the graph. When unarchived, the rebuilt object graph should, with few exceptions, be an exact copy of the original object graph.

我对此的解释是,如果您想存储简单的值,序列化(例如使用 NSDictionary)是一个很好的方法。如果您想存储任意类型的对象图,并保留唯一性和可变性,那么使用存档(例如使用 NSCoder)是您最好的选择。

您可能还想阅读 Apple 的 Archives and Serializations Programming Guide for Cocoa ,其中前面链接的对象图页面是其中的一部分,因为它很好地涵盖了这个主题。

关于cocoa - NSCoder vs NSDictionary,什么时候用什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/149021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com