我正在开发一款益智游戏,游戏引擎拥有复杂的对象层次结构,从游戏角色到矢量再到过渡动画。根据游戏状态,它们可能加起来从 10 到 1000(在极端情况下)。我一直在推迟这一刻,直到我不得不着手保存和加载所有这些烂摊子,因为我没有这方面的经验,但现在我担心的那一刻即将到来。
为此使用 NSKeyedArchiver 是个好主意吗?它的概念似乎很强大。这样我就可以重建对象状态,但这是否包括已保存对象之间的指针?它在性能方面的表现如何?系统是否有时间在应用程序终止时将所有这些对象保存在磁盘上?
我正在开发一款益智游戏,游戏引擎拥有复杂的对象层次结构,从游戏角色到矢量再到过渡动画。根据游戏状态,它们可能加起来从 10 到 1000(在极端情况下)。我一直在推迟这一刻,直到我不得不着手保存和加载所有这些烂摊子,因为我没有这方面的经验,但现在我担心的那一刻即将到来。
为此使用 NSKeyedArchiver 是个好主意吗?它的概念似乎很强大。这样我就可以重建对象状态,但这是否包括已保存对象之间的指针?它在性能方面的表现如何?系统是否有时间在应用程序终止时将所有这些对象保存在磁盘上?
NSKeyedArchiver 非常强大,但它不会让您保留对象之间的链接(除非您在取消归档后自己添加它们)。如果您可以/需要以原子方式存储整个数据集,那么 NSKeyedArchiver 可能是要走的路,但如果有任何比父子关系更复杂的事情,您将需要进行一些“重新水化”。
我们有一个复杂的数据对象层次结构,我们将它们存储到 SQLite 数据库中,并在提取它们时重新连接它们。
我选择了 NSKeyedArchiver,它确实维护对象之间的引用。请参见此处:归档互连对象的简单方法