使用NSCoding序列化对象图中的更改的好方法?

时间:2013-04-18 08:01:33

标签: objective-c nscoding

我有一个支持NSCoding的对象图表。我有一个单独的类来处理序列化本身,即。它检测对象图中的更改,并使用NSKeyedArchiver将其保存到文件中。

我对设计很满意,但我不确定如何观察对象图中的变化。我想到的一个通用解决方案是为每个对象添加一个version属性,每次更改都会增加:

- (void) setFoo: (id) newFoo
{
    _foo = newFoo;
    self.version++;
}

当图形中的对象引用其他对象时,它会观察它们的version(使用KVO),如果它发生变化,则向上传播变化。然后,序列化类将观察根节点的version

这很有效,但管理所有KVO的东西很麻烦,容易出错。你能想到更好的解决方案吗?另一个限制是我希望对象尽可能少地了解序列化。他们应该知道如何序列化(通过实施NSCoding),但他们不应该关心更多。

这必须是序列化框架中的常见问题,对吧?

0 个答案:

没有答案