0

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

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

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

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

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

这一定是序列化框架中的一个常见问题,对吧?

4

0 回答 0