为何归档?它如何提高性能?

时间:2012-07-26 03:49:08

标签: objective-c ios

我已经看到了一些使用NSCoder存档应用程序中的内容的例子

@interface MyApplicationData : NSObject <NSCoding, NSCopying> {
    NSMutableArray* items;
    NSMutableArray* categories;
}

请看这个帖子。 How to use NSCoder

为什么这会提高应用的性能?是不是在你的应用程序中做了更多的事情?谁能告诉我为什么以及何时使用存档?

EDITED: 从一本书中引用,iOS 5编程推动了极限 - 在存储缓存的方法下:“缓存或保存数据可以通过将其存储为数据模型的存档(使用NSKeyedArchiver)或使用更高级别的数据库(如raw)来完成SQLite或使用像Core Data这样的对象序列化框架......“”...... NSKeyedArchiver是通过实现NSCoding协议实现的。“

我认为NSCoding或NSCoder可用于缓存,它将提高性能。那么将它用于缓存是不是一种好的做法?

提前致谢。

3 个答案:

答案 0 :(得分:2)

NSCoding与性能无关,它是一种序列化对象或对象图的技术,因此您可以将其保存到持久存储或通过网络发送。

答案 1 :(得分:1)

WhyA档案:

我正在开发一个需要记住用户累积操作的项目。这些操作涉及在屏幕上移动大量自定义对象。自定义对象的属性包括当前位置,颜色,邻居等。所以这些对象存储在一个数组中。因此,NSCoding用于序列化和归档阵列。下次我需要调用用户的上一个状态时,我只是从存档文件中读取。如果没有这个功能,我想我需要创建一些带有表和字段的DB来分别存储这些属性数据,并在需要时反向重新创建用户的当前状态,如我的例子所示。

答案 2 :(得分:1)

  

为什么这会提高应用的性能?

嗯,你需要一些上下文 - 序列化可能会也可能不会“提高性能”。它可以提高替代序列化表示的性能。这可能会产生影响,或者可能并不重要。

  

不是在您的应用程序中做更多事情吗?

好吧,如果你有一个复杂的结构用xml / plist表示而不是序列化对象,那么没有 - 知道如何编码/解码自己的对象可能比xml或json或其他一些中间表示(由于多种原因)。它也可以更容易管理,更容易表示复杂的结构(与中间序列化表示相比)。

  

有人可以告诉我为什么以及何时使用存档?

通常当您想要将对象或对象图的状态保存到磁盘或传输到另一台计算机时。

假设您有文档数据,并且想要在重新打开文档时还原该文档 - 您的程序必须创建一个表示,以便稍后正确地重建对象或对象图的状态。