我有一张支持NSCoding
. 我有一个单独的类来处理序列化本身,即。它检测对象图中的变化NSKeyedArchiver
并将其保存到文件中。
我对设计相当满意,但我不确定如何观察对象图中的变化。我想到的一个通用解决方案是version
为每个对象添加一个属性,每次更改都会增加一个属性:
- (void) setFoo: (id) newFoo
{
_foo = newFoo;
self.version++;
}
当图中的一个对象引用其他对象时,它会观察它们version
(使用 KVO),如果它发生变化,则向上传播变化。序列化类然后观察version
根节点的。
这可行,但管理所有 KVO 内容很麻烦并且容易出错。你能想出更好的解决方案吗?另一个限制是我希望对象尽可能少地了解序列化。他们应该知道如何序列化(通过实现NSCoding
),但他们不应该关心更多。
这一定是序列化框架中的一个常见问题,对吧?